是否有一個ExpandoObject
的初始化語法,我可以在LINQ to XML查詢中使用我的優點以簡化操作?從LINQ到XML選擇查詢實現動態對象的簡短方法?
注意:查詢的結果旨在超出當前程序集的範圍,因此匿名類型不在問題中(see why here)。
我試圖用簡單的類似下面的語法來創建動態/的expando對象:
public IEnumerable<dynamic> ParseUserXml(string strXmlUser) {
var qClients =
from client in xdoc.Root.Element(XKey.clients).Elements(XKey.client)
// client object
// I cannot get ExpandoObject to initialize inline
select new ExpandoObject() { // try initialization syntax, COMPILE ERR
OnlineDetails = new
{
Password = client.Element(XKey.onlineDetails).
Element(XKey.password).Value,
Roles = client.Element(XKey.onlineDetails).
Element(XKey.roles).Elements(XKey.roleId).
Select(xroleid => xroleid.Value)
// More online detail fields TBD
},
// etc ....
// YIELD DYNAMIC OBJECTS BACK THROUGH IEnumerable<dynamic>...
foreach (var client in qClients)
{
yield return client;
}
更多地參與解決方案,使此代碼的工作可能是:
- 創建具體類並初始化它(但我不想創建一堆)。
- 使用匿名類型及其成員複製到一個動態物體(有些多餘),並返回動態對象
有一個同樣短的語法來實現我打算通過錯誤代碼有問題的事,或者我將不得不以某種方式擴展代碼庫以獲得期望的結果?