C#中访问私有成员
2010-09-30 22:43:54 来源:WEB开发网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);
}
测试:
下面我们使用一个测试类,进行测试。新建一个类库项目,测试的类代码如下:
public class TestClass
{
public TestClass()
{
privatefield1 = 1;
privatefield2 = 99;
PrivateFieldA = "Lo";
PrivateFieldB = "ve";
}
private int privatefield1;
private int privatefield2;
private string PrivateFieldA
{
get;
set;
}
private string PrivateFieldB
{
get;
set;
}
private int Add()
{
return privatefield1 + privatefield2;
}
private string Join()
{
return PrivateFieldA + PrivateFieldB;
}
}
- ››私有属性和使用JavaScript的信息隐藏
- ››访问频率监测有助数据库管理
- ››访问控制大师,使用pam来支持login的访问控制
- ››访问Windows 2008共享资源出错解决方法
- ››访问 IBM 数据库服务器的新方式 —— 构建 Web 服...
- ››访问控制:理解 Windows 文件和注册表权限
- ››访问 Microsoft SQL Server 元数据的三种方法
- ››访问所有用户网站的内容都是一样的
- ››访问站点发生错误:Service Temporarily Unavailab...
- ››访问任何站点任何页面都报告403没权限
- ››访问统计报告不能准确记录多线程下载流量
- ››访问控制
更多精彩
赞助商链接