Ich habe eine c#-Struktur, wo ich den Aufruf der keine Args-Konstruktor auf es zu verbieten müssen.
MyStruct a;
/// init a by members // OK
MyStruct b = MyStruct.Fact(args); // OK, inits by memebers
MyStruct s = new MyStruct(); // can't have that
Ich tue dies hauptsächlich, um explizite Werte für alle Mitglieder zu erzwingen, da es keine gültigen Standardwerte gibt und alle Mitglieder gültige Werte haben müssen.
In C++ wäre es einfach, einen privaten Konstruktor hinzuzufügen, aber c# erlaubt das nicht.
Gibt es eine Möglichkeit, dies zu verhindern?
Ich muss wirklich die Verwendung einer Fabrik erzwingen, so dass die Verhinderung aller öffentlichen Konstruktoraufrufe genauso gut funktionieren würde.
Vollständige Offenlegung: Um eine Mono-Abhängigkeit zu vermeiden, wird die c#-Anwendung automatisch nach D übersetzt, wo new Struct()
führt zu einem Zeiger, und das bringt die Sache für mich durcheinander. Aber diese Frage ist trotzdem relevant, also ignorieren Sie es einfach.
0 Stimmen
Mir gefällt die Idee einer "öffentlichen Schranke" - vielleicht als Strafe für obskure Verbrechen?