C#使用反射获取对象的类型信息(public/private/static)
一.声明一个MyClass对象
public class MyClass { public int MyField; }
二.获取RequiredAttribute类型信息
MyClass instance = new MyClass(); FieldInfo field = instance.GetType().GetField("MyField")!; string fieldName = field.Name; PropertyInfo propertyInfo = instance.GetType().GetProperty(nameof(MyField))!; RequiredAttribute requiredAttribute = propertyInfo.GetCustomAttribute<RequiredAttribute>()!; // 获取必填字段信息 if (requiredAttribute != null) { string propertyName = propertyInfo.Name; // 获取属性名称 object propertyValue = propertyInfo.GetValue(instance)!; // 获取属性值 string propertyType = propertyInfo.PropertyType.Name; // 获取属性类型 // 进行属性验证 ValidationContext context = new ValidationContext(instance); context.MemberName = propertyName; Validator.ValidateProperty(propertyValue, context); }
三.获取其它状态类型字段信息
Type myType = typeof(MyClass); // 直接声明类型 // 获取 public 字段 FieldInfo publicField = myType.GetField("myPublicField")!; // 获取 private 字段(默认只能获取 public 字段) FieldInfo privateField = myType.GetField("myPrivateField", BindingFlags.NonPublic | BindingFlags.Instance)!; // 获取静态字段 FieldInfo staticField = myType.GetField("myStaticField", BindingFlags.Static | BindingFlags.Public)!;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?