C# 将外部事件附加到方法

C# 将外部事件附加到方法,c#,reflection,C#,Reflection,我有一个问题已经有一段时间了,我就是想不出来 如何将外部事件附加到方法或属性? 我的意思是,如何通过反射将事件附加到类中,以便每当调用方法或属性访问器时,都会引发一个事件(应该是这样的: OnPropertyAccessing(object sender, PropertyInfo property, EventArgs e) public class Father { protected object pget(string propertyName) { ... }

我有一个问题已经有一段时间了,我就是想不出来

如何将外部事件附加到方法或属性? 我的意思是,如何通过反射将事件附加到类中,以便每当调用方法或属性访问器时,都会引发一个事件(应该是这样的:

OnPropertyAccessing(object sender, PropertyInfo property, EventArgs e)
public class Father
{
    protected object pget(string propertyName)
    { ... }
    protected void pset(string propertyName, object value)
    { ...}
}

public class Son1 : Father
{
    public string aaa
    {
        get
        {
            return base.pget("aaa").toString();
        }
        set
        {
            base.pset("aaa", value);
        }
    }

    ...
} 
我基本上需要的是以某种方式创建一个抽象类(或使用外部扩展),该类(使用反射)处理它的子类的所有属性或方法调用,这些子类充当伪类,唯一重要的是属性的名称

我预计这可能不清楚,例如:

public class Father
{ ... }

public class Son1 : Father
{
    public string aaa {get; set;}
    public string bbb {get; set;}
}

public class Son2 : Father
{
    public DateTime ccc {get;set;}
}
正如您所看到的,在“Son1”和“Son2”中似乎没有任何意义,这是因为所有实际的“思考”都是由“父亲”完成的,他被提醒已向类型为“Son1”的对象“s”的属性“aaa”发出请求,进而决定该属性应返回的内容

显然,我不想写这样的东西:

OnPropertyAccessing(object sender, PropertyInfo property, EventArgs e)
public class Father
{
    protected object pget(string propertyName)
    { ... }
    protected void pset(string propertyName, object value)
    { ...}
}

public class Son1 : Father
{
    public string aaa
    {
        get
        {
            return base.pget("aaa").toString();
        }
        set
        {
            base.pset("aaa", value);
        }
    }

    ...
} 
如何将外部事件附加到方法或属性?我的意思是,如何通过反射将事件附加到类,以便在调用方法或属性访问器时引发事件

一般来说,你不能。这不是.NET开箱即用的支持

您可能想看看一个AOP框架,例如,它支持这类东西

(顺便说一句,即使是演示代码,我也会尽量遵守.NET命名约定。)