У меня есть этот класс, определенный в одной из сборок .NET Framework:
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);
}
Есть ли способ сделать это с помощью рефлексии или каким-либо другим способом с разумными небольшими усилиями? Я могу (должным образом) обойти это для моей реальной проблемы, поэтому «Нет» - действительно приемлемый ответ, но мне любопытно, возможно ли это.