C# 反射入门
2024-08-28 23:31:10
反射 别的用处先不管,至少在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, ); MethodInfo mi = type.GetMethod("GetAssTest");//找到方法
Console.WriteLine( mi.Invoke(asstest,null)) ;//调用并输出 mi = type.GetMethod("SumAB");
object sumab = mi.Invoke(asstest, new object[] { , });
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, ""); //取属性值
object getproperty = t.GetProperty("Code").GetValue(u, null); //方法一
object getproperty1 = u.GetType().GetProperty("Code").GetValue(u, null); //方法二
最新文章
- Oracle- 表的自增长创建
- 读取spring配置文件的方法(spring读取资源文件)
- Ellipse常用快捷键
- HYSBZ 2243	染色 (树链拆分)
- mysql新建数据库时的collation选择(转)
- 从今天开始学习Java了
- 51Nod 1289 大鱼吃小鱼(模拟,经典好题)
- DSP_TMS32F2812的串口操作
- pentaho cde 自定义复选下拉框 checkbox select
- 在不重装系统的情况下创建Linux的Swap分区
- 关于富文本编辑器ueditor(jsp版)上传文件到阿里云OSS的简单实例,适合新手
- bzoj 1103 : [POI2007]大都市meg (树链剖分+线段树)
- javascript 生成MD5加密
- Android 學習之旅!(2)
- 处女男学Android(七)---Android 应用资源之StateListDrawable
- JQuery效果隐藏/显示
- Spring中三个重要概念 IOC AOP Bean
- 【LOJ】#2016. 「SCOI2016」美味
- arduino波特率
- [C++]复制构造函数、赋值操作符与隐式类类型转换