在项目中使用反射实现动态加载(可配置、可扩展)

1、什么是反射

反射是.NET中的重要机制,通过反射,可以在程序运行时获得程序集中的所有类型(包括接口、类,结构等),并且还可以直接创建对象,使用对象的方法。总之,用一句话总结就是:反射可以获得程序或程序集的信息,也可以动态的加载程序集,并创建其中某个类型的实例,执行实例中的方法。 

2、反射用到的命名空间、类

首先,使用反射,需要引用.Net FrameWork 中的一个命名空间,System.Reflection

然后会用到这个程序集中的一个类:Assembly,使用这个类主要是为了将我们即将使用的程序集加载到当前程序中。

还会用到一个类:Type,这个类位于System命名空间下,使用这个类主要是为了存储动态加载程序集中的类型。然后如果要创建示例对象的话,还需要使用System命名空间下的类Activator

3、代码示例

 public class Common
    {
        private static string appSpaceName = ConfigurationManager.AppSettings["appSpaceName"];

        private static string appClassName = ConfigurationManager.AppSettings["appClassname"];

        /// <summary>
        /// Use interface to translate the obtained type,so you can use the class method directly
        /// </summary>
        public void TestReflection()
        {
            Assembly assembly = Assembly.Load(appSpaceName);
            Type type = assembly.GetType(appClassName);
            Object obj = Activator.CreateInstance(type);
            IBaseDataAccess iBaseDataAccess = (IBaseDataAccess)obj;
            iBaseDataAccess.Query();
        }

        public void TestReflectionExe()
        {
            Assembly assembly = Assembly.Load(appSpaceName);
            Type type = assembly.GetType(appClassName);
            Object obj = Activator.CreateInstance(type);
            MethodInfo methodInfo = type.GetMethod("Query"); 
            if (methodInfo != null)
            {
                methodInfo.Invoke(obj, null);
            }
        }
    }

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值