我知道变量是无意义的(或者没有机会)它的值在运行时之前是不可知的。
我们假设您有这样的方法:
public void Foo (BarEnum barVal)
{
//...
if(barVal == BarEnum.UnappropriateForFooMethod)
throw new BlaBlaException("Invalid barVal for Foo method ->" + barVal);
//...
}
此方法已经为不适当的参数抛出异常。但我打算在运行代码之前警告开发人员并获得异常。主要的想法是。如果她/他不关心警告或关闭警告信息并不重要,那么她/他的代码无论如何都会得到例外。
我猜可以使用内置属性。像Obsolete
一样。但我找不到任何东西......
如果没有用于此目的的属性,我愿意接受自定义解决方案的建议。
答案 0 :(得分:1)
从.NET Framework 4及更高版本开始,有一个名为Code Contracts的东西(在GitHub上)。从未尝试过,但看起来就像你寻求的那样。
还有Roslyn。也没有使用它,但可能至少做了你想要的东西。作为一个超级工具,它可能有点笨拙和冗长的需求。
在不使用外部工具的情况下解决此问题的一种方法是彻底检查代码。