【问题标题】:Dynamically create properties in anonymous type动态创建匿名类型的属性
【发布时间】:2017-07-14 12:39:27
【问题描述】:

我想使用匿名类型创建一个新类型。

这是我的代码:

 var t = paramaterList.Select(x => x).ToArray().Select(item => new
             {
                 item,
             });

我需要根据项目名称为var t 创建属性。

例如:

如果 paramaterList.Select(x => x).ToArray() 包含 3 个项目: 名字、姓氏、年龄

这应该为每个项目创建属性:

paramaterList.Select(x => x).ToArray().Select(item => new
             {

             });

【问题讨论】:

  • 如果您在编译时不知道t 的属性,您将如何使用它?
  • 你想要的太多了。你知道匿名类型是编译器生成的,对吧?这意味着答案是否定的,你不能那样做。
  • 你真的在找dynamicstackoverflow.com/questions/1653046/…吗?
  • 如果不是dynamic,那么肯定是ExpandoObject

标签: c# linq dynamic anonymous-methods


【解决方案1】:

匿名类型仍然是静态类型的,即使它们没有可以用来引用它们的名称。如果您不知道该对象在编译时将具有的字段,则无法创建匿名类型的变量来保存该数据。您需要将数据存储在某种形式的数据结构中,例如字典,这不需要您在编译时知道值是什么。

【讨论】:

  • 您可以根据源类型中的属性创建构建匿名类型的表达式
  • 有什么方法可以实现吗?即使我不使用匿名类型
  • @SergeyBerezovskiy 但是你永远不可能有那种类型的变量。
  • @John Sure,将数据存储在Dictionary 中,就像我在答案中所说的那样。
  • @John 您可以通过 Google 快速搜索找到数十万个示例。
猜你喜欢
  • 2011-04-30
  • 1970-01-01
  • 2023-04-08
  • 2023-03-28
  • 1970-01-01
  • 1970-01-01
  • 2010-09-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多