C# 反射入门

2021-04-14 20:26

阅读:419

标签:ogr   names   obj   prope   点击   col   assembly   get   adk   

反射 别的用处先不管,至少在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();
        }
    }
}

 

 结果

技术分享图片

 

C# 反射入门

标签:ogr   names   obj   prope   点击   col   assembly   get   adk   

原文地址:https://www.cnblogs.com/SoftWareIe/p/8952922.html


评论


亲,登录后才可以留言!