其他分享
首页 > 其他分享> > 更改属性的方法的返回值

更改属性的方法的返回值

作者:互联网

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

public MyClass
{
   private bool isValid;

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

现在,我希望我的[CheckValid]属性检查isValid属性,如果为true,则允许执行DoSomething(),或者如果为false,则使DoSomething()返回default(int)(或至少使DoSomething()内部的代码不正确)

解决方法:

这不是C#的功能:属性不会照此执行.但是,有些扩展框架(如PostSharp)将允许这样做-基本上,它会在IL级别上重写代码以注入功能,通常基于属性.但这需要其他工具.

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

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

标签:custom-attributes,c
来源: https://codeday.me/bug/20191030/1967467.html