当前位置:  开发笔记 > 编程语言 > 正文

在LINQ之外使用匿名类型是一件好事吗?

如何解决《在LINQ之外使用匿名类型是一件好事吗?》经验,为你挑选了1个好方法。

在分析一些ASP.NET MVC项目时,我看到了遍布各地的匿名类型.

HTML助手有它们:

<%=Html.TextBox("view.Address", "address", new { Class = "text_field" })%>

很多动作的返回类型都有:

JsonNetResult jsonNetResult = new JsonNetResult
{
  Formatting = Formatting.Indented,
  Data = new {Something= “”}
}

我知道这来自LINQ:

from p in context.Data
select new { p.Name, p.Age };

这些是否真的是在LINQ之外完成任务的正确方法?它们是否会损害代码的可重用性和可读性?



1> JaredPar..:

恕我直言,匿名类型的最大问题源于无法命名他们的类型.也就是说,不可能在代码中将匿名类型的类型明确指定为表达式.这实际上很难做出像创建通用List这样的事情.

var list = New List();

通常你必须求助于辅助方法.

public List CreateList(T notUsed) {
  return new List();
}
var list = CreateList(new { .Class = "foo" });

这也有一个更大的影响,因为你不能使用匿名类型作为返回类型,使得转换非常笨拙(需要帮助方法)等...

但这些并不是Anonymous Types的设计目的.在许多方面,它们被设计为在特定的定义函数中使用,并且随后创建lambda表达式.不是完全成熟的功能之间的数据通信类型.这肯定是设计的限制,有时会让我感到沮丧.但总的来说,我发现它们是语言中非常有用的结构.

如果没有它们,LINQ的许多部分都是不可能的.

推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有