码迷,mamicode.com
首页 > Windows程序 > 详细

访问私有成员的方法-------C# 转载

时间:2015-11-05 00:19:33      阅读:294      评论:0      收藏:0      [点我收藏+]

标签:

  1、得到私有字段的值:
 
public static T GetPrivateField<T>(this object instance, string fieldname)
{
    BindingFlags flag = BindingFlags.Instance | BindingFlags.NonPublic;
    Type type = instance.GetType();
    FieldInfo field = type.GetField(fieldname, flag);
    return (T)field.GetValue(instance);
}2、得到私有属性的值:
 
public static T GetPrivateProperty<T>(this object instance, string propertyname)
{
    BindingFlags flag = BindingFlags.Instance | BindingFlags.NonPublic;
    Type type = instance.GetType();
    PropertyInfo field = type.GetProperty(propertyname, flag);
    return (T)field.GetValue(instance, null);
}3、设置私有成员的值:
 
public static void SetPrivateField(this object instance, string fieldname, object value) 
{ 
    BindingFlags flag = BindingFlags.Instance | BindingFlags.NonPublic; 
    Type type = instance.GetType(); 
    FieldInfo field = type.GetField(fieldname, flag); 
    field.SetValue(instance, value); 
} 
4、设置私有属性的值: 
public static void SetPrivateProperty(this object instance, string propertyname, object value) 
{ 
    BindingFlags flag = BindingFlags.Instance | BindingFlags.NonPublic; 
    Type type = instance.GetType(); 
    PropertyInfo field = type.GetProperty(propertyname, flag); 
    field.SetValue(instance, value, null); 
} 
5、调用私有方法:
 
public static T CallPrivateMethod<T>(this object instance, string name, params object[] param)
{
    BindingFlags flag = BindingFlags.Instance | BindingFlags.NonPublic;
    Type type = instance.GetType();
    MethodInfo method = type.GetMethod(name, flag);
    return (T)method.Invoke(instance, param);
}

 

访问私有成员的方法-------C# 转载

标签:

原文地址:http://www.cnblogs.com/xiaoleye/p/4937682.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!