详解C#中如何访问私有成员

详解C#中如何访问私有成员

ID:38206889

大小:69.00 KB

页数:5页

时间:2019-05-24

详解C#中如何访问私有成员_第1页
详解C#中如何访问私有成员_第2页
详解C#中如何访问私有成员_第3页
详解C#中如何访问私有成员_第4页
详解C#中如何访问私有成员_第5页
资源描述:

《详解C#中如何访问私有成员》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、详解C#中如何访问私有成员本文将为大家介绍的是C#中如何访问私有成员,也包括得到私有字段的值和得到私有属性的值。首先访问一个类的私有成员不是什么好做法。大家都知道私有成员在外部是不能被访问的。一个类中会存在很多私有成员:如私有字段、私有属性、私有方法。对于私有成员造访,可以套用下面这种非常好的方式去解决。1.private string name; 2.public string Name 3.{ 4.    get 5.    { 6.        return name; 7.    } 8.    set 9.    { 10.        name = value; 1

2、1.    } 12.} 但是有时候,源代码是别人的,只提供给你dll。或者你去维护别人的代码,源代码却有丢失。这样的情况或许你想知道私有成员的值,甚至去想直接调用类里面的私有方法。那怎么办呢?在.net中访问私有成员不是很难,这篇文章提供几个简单的方法让你如愿以偿。为了让代码用起来优雅,使用扩展方法去实现。1、得到私有字段的值:13.public static T GetPrivateField(this object instance, string fieldname) 14.{ 15.    BindingFlags flag = BindingFlags.Insta

3、nce 

4、 BindingFlags.NonPublic; 16.    Type type = instance.GetType(); 17.    FieldInfo field = type.GetField(fieldname, flag); 18.    return (T)field.GetValue(instance); 19.} 2、得到私有属性的值:1.public static T GetPrivateProperty(this object instance, string propertyname) 2.{ 3.    BindingFlags fla

5、g = BindingFlags.Instance 

6、 BindingFlags.NonPublic; 4.    Type type = instance.GetType(); 5.    PropertyInfo field = type.GetProperty(propertyname, flag); 6.    return (T)field.GetValue(instance, null); 7.} 3、设置私有成员的值:8.public static void SetPrivateField(this objectinstance, stringfieldname, o

7、bjectvalue)  9.{  10.    BindingFlagsflag = BindingFlags.Instance 

8、 BindingFlags.NonPublic;  11.    Typetype = instance.GetType();  12.    FieldInfofield = type.GetField(fieldname, flag);  13.    field.SetValue(instance, value);  14.}  4、设置私有属性的值:15.public static void SetPrivateProperty(this o

9、bjectinstance, stringpropertyname, objectvalue)  16.{  17.    BindingFlagsflag = BindingFlags.Instance 

10、 BindingFlags.NonPublic;  18.    Typetype = instance.GetType();  19.    PropertyInfofield = type.GetProperty(propertyname, flag);  20.    field.SetValue(instance, value, null);  21.}  5、调用私有

11、方法:22.public static T CallPrivateMethod(this object instance, string name, params object[] param) 23.{ 1.    BindingFlags flag = BindingFlags.Instance 

12、 BindingFlags.NonPublic; 2.    Type type = instance.GetType(); 3.    MethodInfo m

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。