如何创建一个新的List<T>
,其中牛逼是动态类型的对象。如何创建一个列表与动态对象类型
我
dynamic DyObj = new ExpandoObject();
if (condition1)
{
DyObj.Required = true;
DyObj.Message = "This is the first property being accessed through dynamic object";
}
if (condition2)
{
DyObj.Required = false;
DyObj.Message = "This is the second property....";
}
// and so on...
我想创建List<Dyobj>
和分配基于条件的所有消息Dyobj
。
从评论跟进数据:
var DyObjectsList = new List<dynamic>;
dynamic DyObj = new ExpandoObject();
if (condition1) {
DyObj.Required = true;
DyObj.Message = "Message 1";
DyObjectsList.Add(DyObj);
}
if (condition2) {
DyObj.Required = false;
DyObj.Message = "Message 2";
DyObjectsList.Add(DyObj);
}
有趣的是在DyObjectsList所有的对象都与最后分配的对象的值替换。
@Krik谢谢。这是我做的。 var DyObjectsList =新列表;动态DyObj = new ExpandoObject(); if(condition1){DyObj.Required = true; DyObj.Message =“Message 1”; DyObjectsList .Add(DyObj); } if(condition2){DyObj.Required = false; DyObj.Message =“Message 2”; DyObjectsList .Add(DyObj); }有趣的是,DyObjectsList中的所有对象都被替换为最后分配的对象的值。 –
BumbleBee
@BumbleBee,这是因为你正在覆盖你的对象的值。你实例化你的DyObj的一个**实例,并继续为同一个实例赋值两次。你应该在你的if块中移动'dynamic DyObj = new ExpandoObject();'这个行,并且你最终应该得到这行的两个副本,因为你想添加两个单独的实例。 –