2016-11-07 46 views
0

我想序列化可能有很多不同类型的对象列表,我在下面的函数中完成了这些列表。但我想给每个对象一个名字。当我使用nameof(LogProperties [i])时,我看到了使用nameof但是“表达式没有名称”。有没有什么办法可以实现这一点 - 我在想有没有办法为我想记录的对象添加元属性。我愿意接受其他建议。表达式没有名称错误 - 动态C#对象

public static string CreateAdditionaLog(params object[] LogProperties) 
    { 
     var log = new ExpandoObject() as IDictionary<string, Object>; 

     for (int i = 0; i < LogProperties.Length; i++) 
     { 
      var prop = LogProperties[i]; 
      log.Add(prop.GETNAME(), prop); 
     } 
     return Newtonsoft.Json.JsonConvert.SerializeObject(log); 
    } 

回答

0

如果你正在寻找的对象名称,你可以使用反射来获取对象

for (int i = 0; i < LogProperties.Length; i++) 
     { 
      var prop = LogProperties[i]; 
      log.Add(prop.GetType().Name, prop); 
     } 
+0

这似乎例如提供对象匿名类型名称的Type “Dictionary'2” – user1102550

+0

对象实际上是否有名称,或者这是一个匿名对象的集合 –

+0

好点。这是一个参数列表,我认为我将其转换为Expando对象字典。我现在不在我的电脑附近。 – user1102550

相关问题