我有一个C#结构体,我需要禁止调用它的无参数构造函数。
MyStruct a;
/// init a by members // OK
MyStruct b = MyStruct.Fact(args); // OK, inits by memebers
MyStruct s = new MyStruct(); // can't have that
我这么做主要是为了强制所有成员都有明确的值,因为没有有效的默认值,而且所有成员必须有有效的值。
在C++中,这很容易,只需添加一个私有构造函数,但C#不允许这样做。
有没有一种方法可以防止上述情况发生?
我真的需要强制使用工厂,所以防止所有公共构造函数调用同样有效。
完整的披露:为了避免对mono的依赖,C#应用程序被自动转换为D语言,其中new Struct()
会导致指针,并且这使我的事情变得混乱。然而,尽管如此,这个问题仍然是相关的,所以请忽略它。