为什么需要反射
- 有时不知道具体的类型,可以通过dll去得到类的对象;
- 某些特殊方法,传过来的是泛型类,需要通过反射处理某些特殊的业务;
- 通用方法DataTable和List<T>的相互转化时需要用到反射;
怎样使用反射
得到对象的所有public成员
Type.GetMembers();
得到对象的所有public属性
Type.GetProperties();
得到对象的所有public字段
Type.GetFields();
得到对象的私有成员
Type.GetFields(BindingFlags.NonPublic | BindingFlags.Instance);
得到对象的静态成员
Type.GetMembers(BindingFlags.Public|BindingFlags.Static);
还有枚举类型等等,基本上都是在BindingFlags这个上面做处理。
/// 反射得到泛型类的实体
/// </summary>
/// <typeparam name="T"></typeparam>
/// <returns></returns>
public static T GetModel<T>()
{
var model = default(T);
//得到对象的方法一:
model = (T)typeof(T).GetConstructor(new System.Type[] { }).Invoke(new object[] { });
//得到对象的方法二:
model = (T)Activator.CreateInstance(typeof(T));
//逻辑处理......
return model;
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。