反射和关键类Type

  1. Assembly

            //加载DLL文件
            //Assembly assembly = Assembly.Load("OmronFinsTCP.Net");
            Assembly assembly = Assembly.LoadFrom(@"F:\C#\工程文件\ConsoleTest\ConsoleApp1\ReflectionClass\bin\Debug\ReflectionClass.dll");
            foreach (var item in assembly.GetTypes())
            {
                Console.WriteLine("{0}", item.Name);
            }
            foreach (var item in assembly.GetModules())
            {
                Console.WriteLine("{0}", item.Name);
            }
            foreach (var item in assembly.GetTypes())
            {
                Console.WriteLine("{0}", item.Name);
            }
  1. Type

            //获取指定类型
            Type type = assembly.GetType("MyReflection.Class1");
  1. Activator

            //有参动态实例化
            object objectTest3 = Activator.CreateInstance(type, new object[] { "58"}); 
            //无参动态实例化
            object objectTest1 = Activator.CreateInstance(type) ;
  1. MethodInfo

            //读取、设置属性值
            type.GetProperty("str").SetValue(objectTest1,"666");
            Console.WriteLine("{0}", type.GetProperty("str").GetValue(objectTest1));
            //调用重载的方法1
            MethodInfo methodInfo = type.GetMethod("Show1", new Type[] { });
            object[] pa = new object[] { };
            methodInfo.Invoke(objectTest1, null);
            MethodInfo methodInfo2 = type.GetMethod("Show1", new Type[] { typeof(string) });
            object[] pa2 = new object[] {"789" };
            methodInfo2.Invoke(objectTest1, pa2);

            //调用方法2  重载、无重载
            type.GetMethod("Show2").Invoke(objectTest1, new object[] { "888" });
            MethodInfo methodInfo3 = type.GetMethod("Show2", new Type[] { typeof(string) });
            object[] pa3 = new object[] { "789" };
            methodInfo3.Invoke(objectTest1, pa3);

            //调用有返回值方法
            string str=(string) type.GetMethod("Show3").Invoke(objectTest1, new object[] { "888" });

            MethodInfo methodInfo4 = type.GetMethod("Show3", new Type[] { typeof(string) });
            object[] pa4 = new object[] { "789" };
            string str4= (string)methodInfo4.Invoke(objectTest1, pa4);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值