C# 反射入门

反射 别的用处先不管,至少在WinForm登录后的权限控制上有大用,比如登录后的窗体左侧树,点击通过字符串创建出窗体实例

案例如下图 

AssTest类很简单

namespace assemblyTest
{
public class AssTest
{

public string Name{ get; set; }
public int Age { get; set;}

public string GetAssTest()
{
return string.Format("I Am {0}, i'm {1} years old", Name, Age);
}

public int SumAB(int a, int b)
{ return a + b; }
}
}

 

控制台程序

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Assembly asb= Assembly.Load("assemblyTest");//类库信息

            Type type = asb.GetType("assemblyTest.AssTest");//类的类型

            object asstest = asb.CreateInstance("assemblyTest.AssTest");//创建类的对像

           Form frmTest= (Form)asb.CreateInstance("assemblyTest.frmTest");//创建窗体的对像 类库中加了个窗体 这里也可以0.0


            //属性赋值
            type.GetProperty("Name").SetValue(asstest, "小王");
            type.GetProperty("Age").SetValue(asstest, 18);

            MethodInfo mi = type.GetMethod("GetAssTest");//找到方法
            Console.WriteLine( mi.Invoke(asstest,null)) ;//调用并输出

            mi = type.GetMethod("SumAB");
            object sumab = mi.Invoke(asstest, new object[] { 1, 2 });
            Console.WriteLine(sumab);//调用并输出


            frmTest.ShowDialog();//显示窗体

            Console.ReadKey();
        }
    }
}

 

 结果

//全路径
            Assembly asm = Assembly.LoadFile(@"D:\我的项目\vs\SWIE\SoftWare\权限管理\Test1\bin\Debug\Model.dll");//FullPath

            //取类型
            Type t = asm.GetType("Model.AA_User");

            //生成对象
            object u = Activator.CreateInstance(t);

            //查找对像属性
            PropertyInfo p = t.GetProperty("Code");
            p.SetValue(u, "123");

            //取属性值
            object getproperty = t.GetProperty("Code").GetValue(u, null);  //方法一
            object getproperty1 = u.GetType().GetProperty("Code").GetValue(u, null); //方法二
View Code

 

转载于:https://www.cnblogs.com/SoftWareIe/p/8952922.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值