Как перечислить все переменные classа

Есть ли способ перечислить все переменные (поля) classа в C #. Если да, то может ли кто-нибудь дать мне несколько примеров, как сохранить их в List и получить их, возможно, с помощью Anonymous Types (var).

Ваш вопрос не совсем ясен. Похоже, вы хотите, чтобы значения полей для данного экземпляра вашего classа:

 var fieldValues = foo.GetType() .GetFields() .Select(field => field.GetValue(foo)) .ToList(); 

Обратите внимание, что fieldValues – это List . Здесь foo – это существующий экземпляр вашего classа.

Если вы хотите public и public поля, вам нужно изменить флаги привязки через

 var bindingFlags = BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public; var fieldValues = foo.GetType() .GetFields(bindingFlags) .Select(field => field.GetValue(foo)) .ToList(); 

Если вам просто нужны имена:

 var fieldNames = typeof(Foo).GetFields() .Select(field => field.Name) .ToList(); 

Здесь Foo – это имя вашего classа.

В этом списке будут указаны имена всех полей в classе (как открытых, так и непубличных, как статических, так и полей экземпляров):

 BindingFlags bindingFlags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static; foreach (FieldInfo field in typeof(TheClass).GetFields(bindingFlags)) { Console.WriteLine(field.Name); } 

Если вы хотите получить поля на основе экземпляра объекта, вместо этого используйте GetType :

 foreach (FieldInfo field in theObject.GetType().GetFields(bindingFlags)) { Console.WriteLine(field.Name); } 
 myClass.GetType().GetProperties() 
 var fields = whateverYourClassType.GetType().GetFields().Select(f => f.Name).ToList(); 

Не совсем вопрос – но вот как получить значения всех свойств типа Decimal от объекта, называемого «inv»:

 var properties = inv.GetType().GetProperties(); foreach (var prop in properties) { if (prop.ToString().ToLower().Contains("decimal")) { totalDecimal += (Decimal)prop.GetValue(inv, null); } } 
  • Используя .Net, как я могу определить, является ли тип Numeric ValueType?
  • Как десериализация WCF создает объекты без вызова конструктора?
  • Как вы получаете имя переменной, поскольку оно было физически напечатано в его объявлении?
  • Вызов статического метода с использованием отражения
  • Получение имени параметра метода
  • Как проверить, является ли тип примитивным
  • Как определить, реализует ли тип определенного типа общего типа
  • Получить свойства classа с помощью Typcript
  • Как получить путь сборки, в которой находится код?
  • Как ограничить setAccessible только «законным» использованием?
  • Поддержка отражения в C
  • Давайте будем гением компьютера.