使用属性更改方法的返回值
本文关键字:方法 返回值 属性 | 更新日期: 2023-09-27 18:32:47
我想有一个这样的类(伪代码):
public MyClass
{
private bool isValid;
[CheckValid]
public int DoSomething()
{
return 1;
}
}
现在,我希望我的 [CheckValid]
属性检查isValid
属性,如果它是真的,那么允许DoSomething()
执行,或者,如果它是假的,则DoSomething()
返回default(int)
(或至少使里面的代码DoSomething()
不可访问)
这不是 C# 的功能:属性不会这样执行。但是,像PostSharp这样的扩展框架可以允许这样做 - 基本上它在IL级别重写代码以注入功能,通常基于属性。但这需要额外的工具。
在 C# 中"开箱即用",最好的选择是:
public int DoSomething() {
CheckValid(); // might throw an exception
return 1;
}