2012-02-02 1 views
1

Сейчас я читаю XML-документ и передаю его основные элементы методу ниже. Затем этот метод возвращает соответствующие элементы в IEnumerable, который используется для обновления DataGridView.Запись в XML с анонимными типами?

private IEnumerable<object> readRelease(IEnumerable<XElement> release) 
{ 
    return (
     from r in release 
     select new 
     { 
      Release = r.Attribute("id").Value 
      //etc. 
     }); 
} 

Для DataGridView, этот метод работает хорошо, но что, если я хочу, чтобы написать эти элементы в файл XML или, в более широком смысле, просто хочу, чтобы получить доступ к конкретной переменной (например, «Release»). Могу ли я затем использовать этот метод или я должен пойти на что-то еще?

+0

Возможный дубликат [Доступ к объектам анонимного типа C#] (http://stackoverflow.com/questions/713521/accessing-c-sharp-anonymous-type-objects) – nawfal

ответ

1

Там другая SO вопрос о грязном хаке, который позволяет получить доступ к анонимным типам вне метода, но никто не рекомендовал бы использовать его:

Accessing C# Anonymous Type Objects

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

2

Кай прав, однако я хотел бы указать, что другой вариант заключается в использовании dynamic вместо объекта, если ваш компилятор C# поддерживает его. Затем вы можете получить доступ к свойствам, и они будут разрешены во время выполнения. Но, как уже упоминалось, в вашем сценарии вам, скорее всего, будет лучше определять новый тип.

+0

По какой-то причине я всегда чувствую себя грязным при использовании динамических в такая ситуация. –