C# 反射入门
2021-04-14 20:26
标签:ogr names obj prope 点击 col assembly get adk 反射 别的用处先不管,至少在WinForm登录后的权限控制上有大用,比如登录后的窗体左侧树,点击通过字符串创建出窗体实例 案例如下图 AssTest类很简单 控制台程序 结果 C# 反射入门 标签:ogr names obj prope 点击 col assembly get adk 原文地址:https://www.cnblogs.com/SoftWareIe/p/8952922.htmlnamespace 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();
}
}
}