C# .NET:当属性设置为无效值时是否可以创建编译时警告?

Nat*_*nen 5 c# compiler-errors

这只是一个可行性问题。我知道如果我说

   int myInt = "5"; 
Run Code Online (Sandbox Code Playgroud)

我收到编译时错误。我想要做的是在对象上创建编译时错误或警告。假设我有一个带有一些属性的自定义对象。属性之一不能为 null,否则解决方案将无法编译:

   public static class NoNullObjects
   {
       //NotNullable
       public static NotNullObject {get; set;}
   }
Run Code Online (Sandbox Code Playgroud)

MyClass.cs:

   Line#55   NoNullObjects.NotNullObject = null;
Run Code Online (Sandbox Code Playgroud)

当我构建时我想看到:

   Error: NotNullObject cannot be set to null. MyClass.cs Line 55.
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?

Fra*_*man 4

不,不仅仅是 C#。Microsoft 的代码合同工作可能会满足您的需求:http://msdn.microsoft.com/en-us/devlabs/dd491992.aspx

  • 我曾经热衷于合同设计,现在我热衷于单元测试。根据我的经验,单元测试比使用断言/代码契约更有效。我建议进行单元测试,而不是等待代码合同。 (2认同)