Intereting Posts

Итерация через элементы Struct

Допустим, у нас есть структура

Struct myStruct { int var1; int var2; string var3; . . } 

Можно ли итерации через члены структуры, возможно, использовать foreach? Я кое-что прочитал, но я не уверен, как это применить.

В структуре имеется около 20 переменных. Я пытаюсь читать значения из файла и пытаюсь назначить их переменным, но не хочу вызывать файл.ReadLine () 20 раз. Я пытаюсь получить доступ к переменным-членам через цикл

Вы применяете reflection в значительной степени так же, как обычно, используя Type.GetFields :

 MyStruct structValue = new MyStruct(...); foreach (var field in typeof(MyStruct).GetFields(BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public)) { Console.WriteLine("{0} = {1}", field.Name, field.GetValue(structValue)); } 

Обратите внимание: если структура предоставляет свойства (как это почти наверняка), вы можете использовать Type.GetProperties чтобы получить их.

(Как отмечено в комментариях, это, возможно, не очень хорошо, что нужно делать в первую очередь, и в целом я подозрительно отношусь к пользовательским структурам, но я думал, что все равно включу фактический ответ …)

EDIT: теперь кажется, что вы заинтересованы в настройке полей, что немного сложнее из-за того, как работают типы значений (и да, это действительно не должно быть struct.) Вы захотите вставить один раз , установить значения на экземпляр с одиночным ящиком, а затем в конце распаковывается:

 object boxed = new MyStruct(); // Call FieldInfo.SetValue(boxed, newValue) etc MyStruct unboxed = (MyStruct) boxed;