我想使用反射覆盖自定义方法调用的所有属性。
唯一的方法是使用PropertyBuilder和ILGenerator?我刚刚找到了有关创建新程序集和新类的文档,但没有关于覆盖已定义类中的属性的文档。
这是一个仅包含int属性的示例类。
public class Foo : MyContext
{
public int Bar { get; set; }
public int Baz { get; set; }
}
public class MyContext
{
public MyContext()
{
var props = this.GetType().GetProperties();
foreach(var p in props)
{
//...
}
}
protected void CustomSet(string propName, int value)
{
//...
}
protected int CustomGet(string propName)
{
//...
}
}
这就是预期的行为。
public class FooReflected : MyContext
{
public int Bar
{
get { return CustomGet("Bar"); }
set { CustomSet("Bar", value); }
}
public int Baz
{
get { return CustomGet("Baz"); }
set { CustomSet("Baz", value); }
}
}