使用属性将装饰代码添加到属性的set / get方法

时间:2014-04-15 05:42:25

标签: c# properties attributes

我不知道我是否在问不可能,我试图看看我能通过谷歌找到什么,但也许我没有用正确的搜索词来表达我想要的东西。如果它在那里请原谅我!

我希望在执行属性的set方法时使用自定义属性来执行其他代码。

这是一些伪代码:

public class MyAttribute : System.Attribute{
     AttributedProperty.Get(Property p){
          Console.WriteLine("The value of the Property '{0}' has just been retrieved!", p.Name);
     }
     AttributedProperty.Set(Property p){
          Console.WriteLine("The value of the Property '{0}' has just been set!", p.Name);
     }
}

public class MyClass{
     private string _someProperty;
     [MyAttribute]
     public string SomeProperty{
           get{ return _someProperty;}
           set{ someProperty = value;}
     }

}

很少有像伪代码那样简单,所以我准备做一些工作,如果可以的话我只需要一些方向:)

谢谢!

1 个答案:

答案 0 :(得分:2)

Attribute不适合这种方式,他们只是在您的成员上添加元信息,您可以通过Reflection阅读它们。 相反,您可以使用Castle.Proxy之类的东西在您的方法和属性上使用拦截器。