Las*_*olt 5 c# linq anonymous-types
我经常需要使用属性来扩充对象.直到现在(厌倦了它;)它也很丑陋)我这样做了:
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
};
Run Code Online (Sandbox Code Playgroud)
有一个聪明的方法来做到这一点?我以前做的是这样的:
var objectsWithMyProperty = from o in someListOfObjects
select new
{
OldObject = o, /* I access all of the old properties from here */
SomeNewProperty = value
};
Run Code Online (Sandbox Code Playgroud)
我想这可以用一些反思来完成,但我想有一种更快的方法可以使某些东西等同于第一种繁琐的方法.
谢谢,Lasse
我认为您正在寻找类似于 C# 4.0 中添加的 ExpandoObject 以及动态类型的东西
http://msdn.microsoft.com/en-us/magazine/ff796227.aspx
它在内部使用字典,因此您可以动态添加/删除成员。第一次尝试访问以下属性时:
obj.NewProperty = newValue
Run Code Online (Sandbox Code Playgroud)
ExpandoObject 会自动将其添加到其内部字典中。
希望这可以帮助。