Я до сих пор никогда не спрашивал об этом раньше. У меня есть входная модель с количеством полей, я хотел бы представить строковые имена свойств через модель ввода, так что моя сетка может использовать их:Почему класс не имеет статического или постоянного свойства и свойства экземпляра с тем же именем?
public class SomeGridRow
{
public string Code { get;set; }
public string Description { get;set; }
public const string Code = "Code";
}
Очевидно, что это дает ошибку:
The type 'SomeGridRow' already contains a definition for 'Code'
Почему CLR не справляется с двумя свойствами одного и того же имени, которые на мой взгляд являются отдельными?
string code = gridRow.Code; // Actual member from instantiated class
string codeField = SomeGridRow.Code; // Static/Const
Я сейчас только с помощью дочернего класса под названием Fields
в пределах своих входов, так что я могу использовать SomeGridRow.Fields.Code
. Это немного грязно, но это работает.
Да, я Поза это очевидно, когда это прописано. Я всегда принимал статические члены как само собой разумеющееся как доступ, используя их фактическое имя класса. Часть стандартов кодирования, над которыми я работаю. – GenericTypeTea
@GenericTypeTea - И это отличный стандарт, внутри класса, где он является самым двусмысленным, я думаю, возможно, его никогда не разрешали таким образом ... но я думаю, что так оно и закончилось, вероятно, является наименее запутанным компромиссом. –
Согласен. Это другой случай одного размера, который не подходит всем ... Это не серьезная проблема. Я просто придирчива. Я просто ненавижу вложенные классы. – GenericTypeTea