Я хочу добавить динамические свойства и динамически к объектам. Хотя здесь дан ответ на аналогичный вопрос, в котором используется ExpandoObject
:
Динамическое добавление свойств C# во время выполнения
Хотя приведенный выше ответ динамически добавляет свойства, он не удовлетворяет мою потребность. Я хочу иметь возможность добавлять переменные свойства.
Что я действительно хочу сделать, так это написать универсальный метод, который принимает объект типа T
и возвращает расширенный объект со всеми полями этого объекта, а также с некоторыми другими:
public static ExpandoObject Extend<T>(this T obj)
{
ExpandoObject eo = new ExpandoObject();
PropertyInfo[] pinfo = typeof(T).GetProperties();
foreach(PropertyInfo p in pinfo)
{
//now in here I want to get the fields and properties of the obj
//and add it to the return value
//p.Name would be the eo.property name
//and its value would be p.GetValue(obj);
}
eo.SomeExtension = SomeValue;
return eo;
}