【问题标题】:Issues creating object literal using anonymous types in c#在 c# 中使用匿名类型创建对象文字的问题
【发布时间】:2011-08-13 07:26:57
【问题描述】:

我正在尝试构建 JavaScript 对象文字的 c# 近似值,以传递给 asp.net MVC 中的视图模型:

var obj = new dynamic[]{
    new { name: "Id", index: "Id", width: 40, align: "left" },
    new { name: "Votes", index: "Votes", width: 40, align: "left" },
    new { name: "Title", index: "Title", width: 200, align: "left"}
};

编译器正在抛出:

"An anonymous type cannot have multiple properties with the same name"

我猜它无法区分哪个属性与哪个匿名对象一起使用,我在使用 LINQ 时看到过类似的错误。

有没有更好的方法来完成我想做的事情?

编辑:这是在 VisualStudio 2010 和 .net Framework 4 中。Bala R's Answer 似乎解决了以前版本的问题。

【问题讨论】:

  • 这是你真正的导致错误的代码吗?
  • 您的意思是在属性值之间使用: 语法而不是symbol=value
  • @priyank 是的,但是断章取意,我应该发布其余的内容吗? @tejs 是的,我正在尝试镜像 JavaScript 对象文字语法
  • @tejs 我把它改成了下面发布的语法 Bala R。
  • 不知道你是不是在尝试做JSON序列化,如果是的话,有一些内置功能可以提供帮助:encosia.com/2011/04/13/…

标签: c# javascript asp.net-mvc anonymous-types object-literal


【解决方案1】:

你可以试试这个吗?

var obj = new[]{
    new { name= "Id", index= "Id", width= 40, align= "left" },
    new { name= "Votes", index= "Votes", width= 40, align= "left" },
    new { name= "Title", index= "Title", width= 200, align= "left"}
};

你应该可以像这样访问匿名类数组

if (obj[0].align == "left")
{
   ...
}

【讨论】:

  • 似乎仍然在抛出同样的错误,虽然很好。
  • 我没有任何编译错误。注意:我删除了dynamic,因为我认为在这种情况下不需要它+我没有vs2010和.net 4 :)
  • 嗯,是的,在这里运行 VS2010 和 .net 4,我会将其添加到原始问题中的信息中。
  • 我在 .NET 4 vs2010 上测试了@Bala R 的代码。它有效,它是你正在做的事情。复制并粘贴他的代码,看看它是否编译。
  • @contactmatt 感谢您的确认,将进一步调查。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-14
  • 1970-01-01
相关资源
最近更新 更多