Non l'ho mai messo in discussione prima d'ora. Ho un modello di ingresso con un numero di campi, ho voluto presentare i nomi di stringa delle proprietà attraverso il modello di ingresso in modo che la mia griglia può usarli:Perché una classe non può avere una proprietà statica o costante e una proprietà di istanza con lo stesso nome?
public class SomeGridRow
{
public string Code { get;set; }
public string Description { get;set; }
public const string Code = "Code";
}
Ovviamente, questo dà l'errore:
The type 'SomeGridRow' already contains a definition for 'Code'
Perché il CLR non può gestire due proprietà con lo stesso nome che sono, ai miei occhi, separate?
string code = gridRow.Code; // Actual member from instantiated class
string codeField = SomeGridRow.Code; // Static/Const
Ora sto usando solo una classe figlia chiamato Fields
nei miei ingressi ora, in modo da poter usare SomeGridRow.Fields.Code
. È un po 'complicato, ma funziona.
Aye, I sup posa è ovvio quando è spiegato in questo modo. Ho sempre dato per scontato che i membri statici fossero accessibili usando il loro vero nome di classe. Parte degli standard di programmazione a cui lavoro. – GenericTypeTea
@GenericTypeTea - E questo è uno standard eccellente, all'interno della classe è dove è il più ambiguo che penso, forse non dovrebbe mai essere stato permesso in questo modo ... ma penso che il modo in cui è finito è probabilmente il compromesso meno confuso. –
Sono d'accordo. È un altro caso di taglia unica che non va bene per tutti ... Non è un grosso problema in realtà. Sono solo schizzinoso. Detesto solo le classi annidate. – GenericTypeTea