У меня есть структура c #, где мне нужно запретить вызов конструктора no args.
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 # этого не позволяет.
Есть ли способ предотвратить вышесказанное?
Мне действительно нужно принудительно использовать фабрику, чтобы запретить все публичные вызовы конструктора сработало бы так же.
Полное раскрытие: чтобы избежать монозависимости, приложение c # автоматически переводится в D, где new Struct()
приводит к указателю, и это все портит мне. Однако этот вопрос актуален, несмотря на это, поэтому просто игнорируйте его.