C#修改属性的访问性
Type.GetProperty 方法
获取当前 Type 的特定属性。
参数
- name
- String
包含要获取的属性名的字符串。
返回
表示符合指定需求的属性的对象(如果找到的话);否则为 null
。
示例
下面的示例检索用户定义的类的类型,检索该类的属性,并根据指定的绑定约束显示属性名称。
using System; using System.Reflection; class MyClass { private int myProperty; // Declare MyProperty. public int MyProperty { get { return myProperty; } set { myProperty=value; } } } public class MyTypeClass { public static void Main(string[] args) { try { // Get Type object of MyClass. Type myType=typeof(MyClass); // Get the PropertyInfo by passing the property name and specifying the BindingFlags. PropertyInfo myPropInfo = myType.GetProperty("MyProperty", BindingFlags.Public | BindingFlags.Instance); // Display Name propety to console. Console.WriteLine("{0} is a property of MyClass.", myPropInfo.Name); } catch(NullReferenceException e) { Console.WriteLine("MyProperty does not exist in MyClass." +e.Message); } } }
需要用PropertyInfo.SetValue 方法
设置指定对象的属性值方法来修改属性的可见性
NameValueCollection paramsCollection = context.Request.Form; var propInfo = paramsCollection.GetType().GetProperty("IsReadOnly", BindingFlags.Instance | BindingFlags.NonPublic); propInfo.SetValue(paramsCollection, false, new object[] { }); System.Collections.Specialized.NameObjectCollectionBase.KeysCollection keys = paramsCollection.Keys;
异常
该对象与目标类型不匹配,或者某属性是实例属性但 obj
为 null
。
index
中的参数数量与索引属性采用的参数数量不匹配。
试图非法访问类中的私有或受保护方法。
设置属性值时出错。 例如,为一个索引属性指定的索引值超出范围。 InnerException 属性指示出错的原因。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
2018-12-28 wcf配置文件
2016-12-28 webform的页面缓存