簡體   English   中英

如何在C#中擴充匿名類型對象

[英]How to augment anonymous type object in C#

我經常需要使用屬性來擴充對象。 直到現在(厭倦了它;)它也很丑陋)我這樣做了:

var someListOfObjects = ...;

var objectsWithMyProperty = from o in someListOfObjects
                            select new
                            {
                                o.Name,    /* Just copying all the attributes I need */
                                o.Address, /* which may be all of them. */

                                SomeNewProperty = value
                            };

有一個聰明的方法來做到這一點? 我以前做的是這樣的:

var objectsWithMyProperty = from o in someListOfObjects
                            select new
                            {
                                OldObject = o,           /* I access all of the old properties from here */    
                                SomeNewProperty = value
                            };

我想這可以用一些反思來完成,但我想有一種更快的方法可以使某些東西等同於第一種繁瑣的方法。

謝謝,Lasse

不支持將新屬性附加到現有匿名類型。 匿名類型表達式只能用於創建具有指定屬性的全新匿名類型。 附加新屬性的兩個最佳替代方案是問題中列出的方法。

我認為您正在尋找的是像C#4.0中添加的ExpandoObject以及動態類型

http://msdn.microsoft.com/en-us/magazine/ff796227.aspx

在內部,它使用字典,因此您可以動態添加/刪除成員。 您第一次嘗試訪問以下屬性時:

obj.NewProperty = newValue

ExpandoObject會自動將其添加到其內部字典中。

希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM