Я изучаю модель DynamicObject в .NET 4.0. Приложение - это тот, где объект будет описан через какой-то файл text/xml, и программа должна создать объект при чтении этого файла.
С DynamicObject мы можем легко добавлять элементы, учитывая, что мы знаем имя члена априори. Но что, если мы даже не знаем, как добавить имя участника? Есть ли способ сделать эту динамику?
Например, мне нужно создать объект с элементами Property1 ',' Property2 'и другим объектом с' PropertyA 'и' PropertyB ', как описано в файле text/XML. Как я могу создать объект динамически на основе этой информации?
UPDATE Я получил некоторые идеи из этой публикации: http://www.codeproject.com/KB/cs/dynamicincsharp.aspx
Эта реализация позволяет мне сделать что-то вроде следующего:
dynamic d = new PFDynamicChannel();
PFCouplings c = ((PFChannel)d).Coupling;
d.NewProperty = "X";
Причина, по которой я не хочу использовать словарь, - использовать методы TryGetMember и TrySetMember, которые я могу переопределить, в рамках которых я могу поднять события, которые необходимы для программы.
Таким образом, я могу наследовать базовый класс (PFChannel), но я также могу добавлять элементы на лету. Но, моя проблема в том, что я не буду знать новое имя свойства до времени исполнения. И, на самом деле, я не думаю, что динамический объект позволяет мне добавлять новые свойства "на лету". Если это так, как я могу использовать ExpandoObject, чтобы дать мне эту возможность?