使用属性更改方法的返回值

时间:2013-09-24 16:03:04

标签: c# custom-attributes

我想要一个像这样的类(伪代码):

public MyClass
{
   private bool isValid;

   [CheckValid]
   public int DoSomething()
   {
      return 1;
   }
}

现在,我希望我的[CheckValid]属性检查isValid属性,如果是,则允许DoSomething()执行,或者如果为false,则生成{{1返回DoSomething()(或至少使default(int)内的代码无法访问)

1 个答案:

答案 0 :(得分:4)

这不是C#的一个特性:属性不是执行。但是,像PostSharp这样的扩展框架 允许这样做 - 基本上它会重写IL级别的代码以注入功能,通常基于属性。但这需要额外的工具。

在C#“开箱即用”中,你最好的选择是:

public int DoSomething() {
    CheckValid(); // might throw an exception
    return 1;
}