В C# нет синтаксического эквивалента, но есть некоторые способы приблизиться к одной и той же функции.
Вы можете имитировать доступ к типу индексатора с помощью Dictionary
, но тогда вы потеряете доступ в стиле собственности. Для доступа свойства стиля, вы могли бы сделать что-то подобное в C# с помощью анонимного типа, например:
var myType = new { e1="elem1",e2="elem2",e3="elem3",e4="elem4"};
var val1 = myType.e1;
Однако это не создает массив или разрешить доступ типа массива и не позволяет модификации типа после создания.
Чтобы получить более близкое приближение к функции JavaScript, вы можете использовать ExpandoObject
, чтобы немного подражать этому, или вы могли бы что-то реализовать самостоятельно.
Для этого вам понадобится класс, который имеет конструктор для автоматического генерации свойств из переданного массива и предоставляет индекс, который, в свою очередь, использует отражение для поиска именованного свойства.
Initialization этого типа будет что-то вроде:
var myType = new MyType(new[]{
{"e1", "elem1"},
{"e2", "elem2"},
{"e3", "elem3"},
{"e4", "elem4"}});
Это предполагает, что есть подтип для каждого определения элемента (возможно с использованием Tuple
или KeyValuePair
Конструктор будет затем принимает IEnumerable<T>
этого типа. .
Почему вы хотите использовать эти обозначения? –
Не делайте этого. Возможно, есть и другие законные сценарии, но это (действие контроллера ASP.NET MVC), безусловно, не является одним из них. Вы действительно действительно хотите проверить входные данные, поступающие от пользователей через Интернет. Не просто произвольные значения в произвольно именованные свойства. Это просто требует проблем с безопасностью. –
Благодарим вас за полезную информацию. Поскольку я новичок, я думал о том, чтобы вводить входные значения в строго типизированный объект, который генерирует исключение, если значения не могут быть отлиты. После заполнения значений и отсутствия исключения, я бы подтвердил, что значения свойств находятся в правильном формате. После того, как все это будет проверено, я могу передать этот объект в элемент управления, который он сохранил в БД. – deDogs