Использование LINQ для создания List , где T: someClass

Это связано с моим предыдущим вопросом Преобразование общего списка C # в класс, реализующий List

У меня есть следующий код:

public abstract class DataField
{
    public string Name { get; set; }
}

public class DataField : DataField
{
    public T Value { get; set; }
}

public static List ConvertXML(XMLDocument data) {  
     result = (from d in XDocument.Parse(data.OuterXML).Root.Decendendants()
                      select new DataField
                      {
                          Name = d.Name.ToString(),
                          Value = d.Value
                      }).Cast().ToList();  
    return result;
}

Это работает, однако я хотел бы иметь возможность изменить выбранную часть запроса LINQ на что-то вроде этого:

select new DataField<[type defined in attribute of XML Element]>
{
  Name = d.Name.ToString(),
  Value = d.Value
}

Это просто плохой подход? Является ли это возможным? Есть предложения?

14
задан Community 23 May 2017 в 12:11
поделиться