2013-05-01 89 views
0

我一直有问题一段时间,我只是无法弄清楚。将外部事件附加到方法

如何将外部事件附加到方法或属性? 我的意思是,我如何能够通过反射附加一个事件的一类,这样,每当一个方法或属性访问器被称为事件将提高(这应该是这个样子:

OnPropertyAccessing(object sender, PropertyInfo property, EventArgs e) 

我基本上需要以某种方式创建一个抽象类(或使用扩展的外部)(使用反射)处理所有的属性或方法调用它的孩子作为虚拟类,谁的唯一重要性是属性的名称

我期望这可能不清楚,因此,例如:

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”,然后决定属性应该返回的内容。

很显然,我不想写是这样的:

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); 
     } 
    } 

    ... 
} 

回答

0

我如何可以将外部事件的方法或属性?我的意思是,我如何通过反射附加一个事件的一类,这样,每当一个方法或属性访问器被称为事件将引发

你不能,一般。这不仅仅是.NET支持的东西。

您可能想看看支持这种事情的AOP框架,如PostSharp

(顺便说一句,即使是演示代码,我也会尝试坚持使用.NET命名约定。)