基本信息
源码名称:利用接口实现动态加载类以及 Activator.CreateInstance用法示例
源码大小:0.05M
文件格式:.zip
开发语言:C#
更新时间:2013-01-06
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300

本次赞助数额为: 1 元 
   源码介绍

接口机制实现动态加载类,其中包含 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;
        }