Есть ли что-то вроде getattr () Python в C #?

Есть ли что-то вроде getattr () Python в C #? Я хотел бы создать окно, прочитав список, содержащий имена элементов управления, которые будут помещены в окно.

Существует также Type.InvokeMember .

public static class ReflectionExt { public static object GetAttr(this object obj, string name) { Type type = obj.GetType(); BindingFlags flags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.GetProperty; return type.InvokeMember(name, flags, Type.DefaultBinder, obj, null); } } 

Который может быть использован как:

 object value = ReflectionExt.GetAttr(obj, "PropertyName"); 

или (в качестве метода расширения):

 object value = obj.GetAttr("PropertyName"); 

Используйте рефлексию для этого.

Type.GetProperty() и Type.GetProperties() возвращают экземпляры PropertyInfo , которые могут использоваться для чтения значения свойства для объекта.

 var result = typeof(DateTime).GetProperty("Year").GetValue(dt, null) 

Type.GetMethod() и Type.GetMethods() возвращают экземпляры Type.GetMethods() , которые могут использоваться для выполнения метода для объекта.

 var result = typeof(DateTime).GetMethod("ToLongDateString").Invoke(dt, null); 

Если вы не обязательно знаете тип (который был бы немного странным, если вы новичок в имени свойства), чем вы могли бы сделать что-то подобное.

 var result = dt.GetType().GetProperty("Year").Invoke(dt, null); 

Да, ты можешь это сделать…

 typeof(YourObjectType).GetProperty("PropertyName").GetValue(instanceObjectToGetPropFrom, null); 

Существует класс System.Reflection.PropertyInfo, который может быть создан с использованием object.GetType (). GetProperties (). Это можно использовать для проверки свойств объекта с помощью строк. (Аналогичные методы существуют для методов объектов, полей и т. Д.)

Я не думаю, что это поможет вам в достижении ваших целей. Вероятно, вы должны просто создавать и манипулировать объектами напрямую. Элементы управления имеют свойство Name, которое вы можете установить, например.