Посмотрите на приведенный ниже кодКак конвертировать в список <ExpandoObject> правильно
private static List<ExpandoObject> GetDBDetails()
{
var directoryPath = Environment.CurrentDirectory.Replace("\\bin\\Debug", "\\DataSource");
var filePath = Path.Combine(directoryPath, "DBDetail.xml");
try
{
//Load xml
XDocument xdoc = XDocument.Load(filePath);
if (xdoc == null) return null;
List<ExpandoObject> dbDetails = (from dbDetail in xdoc.Descendants("database")
select new ExpandoObject
{
DBDetailId = Convert.ToInt32(dbDetail.Attribute("dbDetailId").Value),
DBServerId = Convert.ToInt32(dbDetail.Attribute("dbServerID").Value)
});
return dbDetails;
}
catch (Exception ex)
{
McAfee.EnterpriseLibrary.Logging.LogUtil.LogEntry(ex, System.Diagnostics.TraceEventType.Critical);
return null;
}
}
Я получаю ошибку
System.Dynamic.ExpandoObject»не содержит определения для„DBDetailId“ System.Dynamic.ExpandoObject 'не содержит определения для «DBServerId»
Как исправить это?
Другая альтернатива http://stackoverflow.com/questions/13704752/deserialize- xml-to-object-using-dynamic – I4V
По какой-то причине вы используете 'ExpandoObject' и не создаете новый класс, например« DbDetails », для этой конкретной цели? Intellisense не будет работать за пределами этого метода, и прохождение «динамического» тоже не является хорошей идеей. –
Поскольку тип объекта мне неизвестен, и я не могу создать конкретные классы, поскольку это ограничение (: –