Come implementare una struttura / struttura .NET vincolata (diciamo LimitedString ), dove il suo stato con i valori predefiniti (impostato da CLR a valori tecnici predefiniti, vale a dire null, zeri, ecc.) dovrebbe essere proibito a causa di alcuni design vincolo?
Ad esempio, in caso di banale struct LimitedString , le proprietà sono String Value e int MaxLength = 10 , dove il valore della proprietà MaxLength deve essere almeno 1 . Il valore 0 non è consentito dalla progettazione. Ma quando initalizzo la struttura, ho 0 lì. Come forzare il valore 10 nei valori predefiniti?
Vedo due opzioni:
- Genera un'eccezione in
static( vb.netshared) costruttore senza parametri → forza usando solo costruttore / i con parametri. A volte è previsto un uso improprio e senza parametri. - Aggiungi campo privato helper
IsInitializede mentre èfalse, assume valori predefiniti, cioèMaxLength = 10. Una complessità leggermente superiore all'interno della struttura
L'opzione # 2 è legittima o viola alcuni principi di progettazione? C'è un modo migliore rispetto all'opzione # 2?
EDIT: l'opzione # 1 non funzionerà comunque, il costruttore menzionato viene chiamato ogni volta, anche se vengono chiamati altri costruttori.