我知道我写不出这样的方法:

public var MyMethod()
{
   return new{ Property1 = "test", Property2="test"};
}

否则我可以做到:

public object MyMethod()
{
   return new{ Property1 = "test", Property2="test"}
}

但是我不想做第二种 Select ,因为如果我这样做,我将不得不使用反射.


我想这么做的原因:

今天,我在我的aspx页面中有一个方法,返回一个datatable作为结果,我试图将这个datatable转换成一个匿名方法,其中包含我想要使用的属性.我不想创建一个类来实现这一点,因为我需要多次执行相同的查询,所以我认为创建一个返回匿名类型的方法是一个好主意.

推荐答案

将其返回为System.Object是从方法返回匿名类型的only种方法.不幸的是,没有其他方法可以做到这一点,因为匿名类型是专门为防止以这种方式使用而设计的.

有一些技巧,你可以做与返回Object,让你接近.如果您对此解决方案感兴趣,请阅读Can't return anonymous type from method? Really?.

Disclaimer:尽管我链接的文章显示了一个解决方法,但这并不意味着这是一个好主意.当创建常规类型更安全、更容易理解时,我强烈建议您使用这种方法.

.net相关问答推荐

从Couchbase删除_txn文档的推荐方法?""

在PowerShell中,XML子对象和属性是对象属性.它怎麽工作?

即时窗口中的动态导致Microsoft.CSharp.RuntimeBinder.Binder未定义或导入错误

process.WaitForExit() 异步

为什么 StyleCop 建议在方法或属性调用前加上this?

如何将浮点数向上舍入到 C# 中最近的 int?

为什么 ?: 会导致转换错误,而 if-else 不会?

.net:System.Web.Mail 与 System.Net.Mail

调用委托与方法的性能

如何从字符串中删除所有字母字符?

操作对事务的状态无效错误和事务范围

System.String.Copy 在 .NET 中有什么用?

在 C# 中将匿名类型转换为键/值数组?

VB.NET 与 C# 整数除法

没有 @Html.Button !

如何保护我的 .NET 程序集免受反编译?

将 Dictionary 转换为匿名对象?

Windows 服务在哪个目录中运行?

模拟和单元测试需要时如何抛出 SqlException?

嵌套捕获组如何在正则表达式中编号?