IT干货   IT源码网   IT序号网   ITGUEST

C#之反射详解

为什么需要反射

  • 有时不知道具体的类型,可以通过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;
}
posted @   net工程师  阅读(98)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示