Можно ли сделать отражение в выборе LINQ2XML? - PullRequest
0 голосов
/ 31 августа 2010

Новый вопрос о предыдущем вопросе

Предыдущий вопрос был:

Мне нужно заполнить несколько объектов, содержащих свойство 30-50, из нескольких результатов linq to xml

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

своего рода

(from xml in myXml select xml).ToList<Object>;

в select, возможно ли использовать отражение, чтобы присвоить значение моему объекту на основе имени поля xml?

Ответы [ 2 ]

0 голосов
/ 01 сентября 2010

Если ваш класс, для которого вы хотите создать экземпляры, имеет согласованные сопоставления XML, вы можете использовать одну из платформ сериализации .NET вместо или в сочетании с LINQ to XML. Например, если вы использовали сериализацию контракта данных, то задайте этот класс:

[DataContract]
public class MySerializableObject
{
    [DataMember]
    public string PropertyA { get; set; }

    [DataMember]
    public int PropertyB { get; set; }
}

У вас может быть такой код:

using (var someStream = OpenXmlStream())
{
    var deserializer = new DataContractSerializer(
        typeof(List<MySerializableObject>));
    var myList = deserializer.ReadObject(someStream) 
        as List<MySerializableObject>;
}
0 голосов
/ 31 августа 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...