首页

利用接口实现动态加载类以及 Activator.CreateInstance用法示例

c#

2020-8-25

接口机制实现动态加载类,其中包含 Activator.CreateInstance基本用法示例,有反射的味道

 

    public interface IPerson
    {
        string GetHello();
    }
    public class Teacher:IPerson
    {
        public string  GetHello()
        {
            return "Hello,I am a Teacher.";
        }
    }
    public class Student:IPerson
    {
        public string GetHello()
        {
            return "Hello,I am a Student.";
        }
    }



    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            this.cbClass.Items.Add("InterFaceCreateInstanceDemo.Teacher");
            this.cbClass.Items.Add("InterFaceCreateInstanceDemo.Student");
            this.cbClass.SelectedIndex = 0;
        }

        private void btnExe_Click(object sender, EventArgs e)
        {
            IPerson p = InitPerson(null);
            MessageBox.Show(p.GetHello());
        }
        public IPerson InitPerson(object objArr)
        {
            string vFullClassName = this.cbClass.SelectedItem.ToString();
            object result = null;
            Type pagerType = null;
            pagerType = Type.GetType(vFullClassName);
            if (objArr != null) result = Activator.CreateInstance(pagerType, objArr);
            else result = Activator.CreateInstance(pagerType);
            return (IPerson)result;
        }
    }

 

当动态加载的类在不同的程序集的时候 需要用如下方法:

        public IPager InitPager(object objArr)
        {
            string vFullClassName =  SpiderEngine;
            object result = null;
            Type pagerType = null;

            System.Reflection.Assembly asmb = System.Reflection.Assembly.LoadFrom("XXX.dll");
            pagerType = asmb.GetType(vFullClassName);
            
            
            if (objArr != null) result = Activator.CreateInstance(pagerType, objArr);
            else result = Activator.CreateInstance(pagerType);
            return (IPager)result;
        }

资源下载此资源下载价格为2D币(VIP免费),请先
资源文件列表
InterFaceCreateInstanceDemo/InterFaceCreateInstanceDemo/bin/Debug/InterFaceCreateInstanceDemo.exe , 10240
InterFaceCreateInstanceDemo/InterFaceCreateInstanceDemo/bin/Debug/InterFaceCreateInstanceDemo.pdb , 24064
InterFaceCreateInstanceDemo/InterFaceCreateInstanceDemo/bin/Debug/InterFaceCreateInstanceDemo.vshost.exe , 22472
InterFaceCreateInstanceDemo/InterFaceCreateInstanceDemo/bin/Debug/InterFaceCreateInstanceDemo.vshost.exe.manifest , 490
InterFaceCreateInstanceDemo/InterFaceCreateInstanceDemo/Form1.cs , 1209
InterFaceCreateInstanceDemo/InterFaceCreateInstanceDemo/Form1.Designer.cs , 3181
InterFaceCreateInstanceDemo/InterFaceCreateInstanceDemo/Form1.resx , 5817
InterFaceCreateInstanceDemo/InterFaceCreateInstanceDemo/InterFaceCreateInstanceDemo.csproj , 3881
InterFaceCreateInstanceDemo/InterFaceCreateInstanceDemo/InterFaceCreateInstanceDemo.sln , 943
InterFaceCreateInstanceDemo/InterFaceCreateInstanceDemo/InterFaceCreateInstanceDemo.v11.suo , 36864
InterFaceCreateInstanceDemo/InterFaceCreateInstanceDemo/IPerson.cs , 212
InterFaceCreateInstanceDemo/InterFaceCreateInstanceDemo/obj/Debug/DesignTimeResolveAssemblyReferences.cache , 863
InterFaceCreateInstanceDemo/InterFaceCreateInstanceDemo/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache , 6899
InterFaceCreateInstanceDemo/InterFaceCreateInstanceDemo/obj/Debug/InterFaceCreateInstanceDemo.csproj.FileListAbsolute.txt , 1010
InterFaceCreateInstanceDemo/InterFaceCreateInstanceDemo/obj/Debug/InterFaceCreateInstanceDemo.csproj.GenerateResource.Cache , 975
InterFaceCreateInstanceDemo/InterFaceCreateInstanceDemo/obj/Debug/InterFaceCreateInstanceDemo.csprojResolveAssemblyReference.cache , 2209
InterFaceCreateInstanceDemo/InterFaceCreateInstanceDemo/obj/Debug/InterFaceCreateInstanceDemo.exe , 10240
InterFaceCreateInstanceDemo/InterFaceCreateInstanceDemo/obj/Debug/InterFaceCreateInstanceDemo.Form1.resources , 180
InterFaceCreateInstanceDemo/InterFaceCreateInstanceDemo/obj/Debug/InterFaceCreateInstanceDemo.pdb , 24064
InterFaceCreateInstanceDemo/InterFaceCreateInstanceDemo/obj/Debug/InterFaceCreateInstanceDemo.Properties.Resources.resources , 180
InterFaceCreateInstanceDemo/InterFaceCreateInstanceDemo/Program.cs , 508
InterFaceCreateInstanceDemo/InterFaceCreateInstanceDemo/Properties/AssemblyInfo.cs , 1392
InterFaceCreateInstanceDemo/InterFaceCreateInstanceDemo/Properties/Resources.Designer.cs , 2906
InterFaceCreateInstanceDemo/InterFaceCreateInstanceDemo/Properties/Resources.resx , 5612
InterFaceCreateInstanceDemo/InterFaceCreateInstanceDemo/Properties/Settings.Designer.cs , 1114
InterFaceCreateInstanceDemo/InterFaceCreateInstanceDemo/Properties/Settings.settings , 249
InterFaceCreateInstanceDemo/InterFaceCreateInstanceDemo/Student.cs , 289
InterFaceCreateInstanceDemo/InterFaceCreateInstanceDemo/Teacher.cs , 290
没有账号? 忘记密码?

社交账号快速登录