2015-07-22 3 views
-1

мне нужно создать объект, который имеет свойства, которые называются динамически, как:Использование ExpandoObject, когда имена свойств являются динамическими, возможно ли это?

<users> 
    <user1name>john</user1name> 
    <user2name>max</user2name> 
    <user3name>asdf</user3name> 
</users> 

Возможно ли это?

+0

(Предлагаемый дубликат не был дубликат, как это не связано ExpandoObject.) –

ответ

1

Да, абсолютно. Просто используйте его в качестве IDictionary<string, object> для заполнения:

IDictionary<string, object> expando = new ExpandoObject(); 
expando["foo"] = "bar"; 

dynamic d = expando; 
Console.WriteLine(d.foo); // bar 

В вашем случае XML, вы перебрать элементы, например

var doc = XDocument.Load(file); 
IDictionary<string, object> expando = new ExpandoObject(); 
foreach (var element in doc.Root.Elements()) 
{ 
    expando[element.Name.LocalName] = (string) element; 
} 
+0

Великий, как дополнение, как я могу создать список этих? Поэтому в вашем примере я хотел бы добавить expando в список расширений. Я получаю сообщение о том, что я не могу добавить IDictionary в файл expandoobject. –

+2

@cool: Так отбросьте назад к ExpandoObject. Если это не сработает, задайте новый вопрос с подробностями. –

Смежные вопросы