我的班级中有一个私有静态只读字段:
public class MyClass
{
// ISSUE #1 -- requires unproven: path != null
private static readonly DirectoryInfo MyDirectory =
new DirectoryInfo(Settings.Default.MyDirectoryPath);
protected virtual void SomeMethod()
{
if (MyDirectory.Exists)
{
// ISSUE #2 -- requires unproven: !string.IsNullOrEmpty(path)
var catalog = new DirectoryCatalog(MyDirectory.FullName);
}
}
}
对于问题 #1,我使用了一个空合并运算符来默认为某个魔术字符串并修复了它,但我真的不喜欢那个解决方案。我希望有更好的解决方案。
对于问题 #2,我唯一能想到的是使用 Contract.Assumes,因为如果我尝试使用Contract.Requires(MyDirectory.Exists || !String.IsNullOrEmpty(MyDirectory.FullName));
它会抱怨可见性(在受保护方法的要求中使用的私有字段)。