我目前正在维护一个具有数万个现有代码的旧项目。由于有很多代码可以很高兴地假设每个调用者都是行为良好的公民,而只是跳过对传递给它的任何数据的验证,因此我引入了Fody NullGuard,以防止我遵循这种传统编写/重构的任何新代码。由于此项目中的代码覆盖范围仍然很稀少,因此我不能在所有地方都使用隐式验证,因为在代码中可能会使用一些“合法的”空值。因此,相反,我仅将NullGuard属性应用于编写的新类,否则我可以验证的类不会受到负面影响。
我有一个结构,其构造函数将字符串作为参数:
public struct Foo {
public Foo(decimal value, string tag) { ... }
}
我想使用Fody来提供针对null的保护措施。但是,当我尝试将NullGuard属性放在其顶部时,出现编译错误:
using NullGuard;
[NullGuard(ValidationFlags.AllPublicArguments)]
public struct Foo {
public Foo(decimal value, string tag) { ... }
}
错误CS0592:此声明类型上的属性'NullGuard'无效。它仅对“汇编,类”声明有效。
NullGuard不支持值类型吗,还是只是不幸的遗漏(我想不太可能,因为它已经在6.0版中了)?
除了到处都可以进行手动检查之外,还有其他选择吗?
答案 0 :(得分:0)
https://github.com/Fody/NullGuard
NullGuardAttribute NullGuardAttribute可以在类或 组装级别。它带有ValidationFlags参数。
[assembly: NullGuard(ValidationFlags.None)] // Sets no guards at the assembly level [NullGuard(ValidationFlags.AllPublicArguments)] // Sets the default guard for class Foo public class Foo { ... }
您是否尝试过添加[assembly: NullGuard(ValidationFlags.None)]
?