我有这个类,在 .NET 的一个框架程序集中定义:
public class ExternalClass
{
internal double DesiredProperty => 1.0;
}
我从 ExternalClass 派生并希望覆盖或以某种方式拦截对该属性的调用。我知道这可能会变得非常棘手,但这实际上只是为了概念验证。
我尝试了反射的直接方法,但没有任何运气:
private void DoEvilStuff()
{
var prop = typeof(ExternalClass).GetProperty("DesiredProperty", BindingFlags.Instance | BindingFlags.NonPublic);
// Exception: Property has no setter
prop.SetValue(this, 5);
}
private void DoEvilStuff()
{
var prop = typeof(ExternalClass).GetField("<DesiredProperty>k__BackingField", BindingFlags.Instance | BindingFlags.NonPublic);
// fails, prop is null:
prop.SetValue(this, 5);
}
有没有办法通过反射来做到这一点,或者任何其他合理的小努力方法?对于我的实际问题,我可以(正确地)解决这个问题,所以“否”确实是一个可以接受的答案,但我很好奇这是否可能。