更改属性的方法的返回值
作者:互联网
我想要一个像这样的类(伪代码):
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