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;
}
より複雑なソリューション:
- を具象クラスを作成します代わりにそれを初期化します(しかし、私はそれらの束を作成したくありません)。
- 使用匿名型とは、(やや冗長)動的オブジェクトにそのメンバーをコピーして、動的オブジェクト
私は疑問に誤ったコードによって行うつもり何を達成するために均等に短い構文がありますを返しますまたは希望の結果を得るために何らかの方法でコードベースを拡張する必要がありますか?