使用反射覆盖属性

时间:2018-05-25 12:02:07

标签: c# reflection

我想使用反射覆盖自定义方法调用的所有属性。

唯一的方法是使用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); }
    }
}

0 个答案:

没有答案