zoukankan      html  css  js  c++  java
  • 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:我的项目vsSWIESoftWare权限管理Test1inDebugModel.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
  • 相关阅读:
    产品开发协作流程
    iOS性能优化
    iOS地图国内和国外的偏差
    Apple技术支持
    iOS应用架构谈 网络层设计方案
    form表单重复被提交
    SpringBoot+filter+listener+拦截器
    SpringBoot中的异常处理
    谷歌浏览器突然不能使用,并且出现报错码"STATUS_INVALID_IMAGE_HASH"解决方法
    form提交(图片,excel其他文件)
  • 原文地址:https://www.cnblogs.com/SoftWareIe/p/8952922.html
Copyright © 2011-2022 走看看