【发布时间】:2009-06-28 18:06:57
【问题描述】:
我需要一些帮助来尝试使用反射来设置这行代码:
this.extensionCache.properties[attribute]
= new ExtensionCacheValue((object[]) value);
this.extensionCache 是继承自基类的内部私有字段。
我可以使用以下代码访问 extensionCache 字段:
FieldInfo field = typeof(Principal).GetField("extensionCache",BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
但我不知道如何使用索引调用属性方法,然后将其设置为我无法查看的类的实例。
extensionCache 属于以下类型:
internal class ExtensionCache
{
private Dictionary<string, ExtensionCacheValue> cache
= new Dictionary<string, ExtensionCacheValue>();
internal ExtensionCache()
{
}
internal bool TryGetValue(string attr, out ExtensionCacheValue o)
{
return this.cache.TryGetValue(attr, out o);
}
// Properties
internal Dictionary<string, ExtensionCacheValue> properties
{
get
{
return this.cache;
}
}
}
这是值类
internal ExtensionCacheValue(object[] value)
{
this.value = value;
this.filterOnly = false;
}
如果某些背景有助于我尝试扩展 System.DirectoryServices.AccountManagement.Principal 这是所有这些方法所在的地方。
参见方法:ExtensionSet
感谢您的帮助。
【问题讨论】:
标签: c# .net reflection field