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;
}
作者:虾米哥
微信公众号:IT虾米,左侧为二维码
个人技术网站-IT虾米网:http://www.itxm.cn
个人技术网站-编程符号网:http://www.itfh.cn
个人技术网站-IT干货网:http://www.itgh.cn
新浪微博:https://weibo.com/u/2814576687
如果你想及时得到个人撰写文章以及著作的消息推送,或者想看看个人推荐的技术资料,可以扫描左边二维码(或者长按识别二维码)关注个人公众号。
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
标签:
.NET
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人