c# - 如何制作包含匿名对象的列表?

标签 c#

我创建了以下代码:

var header = "Entity Validation Error";
var detail = < I want to have a list that contains the title and errors list here>
foreach (var eve in ex.EntityValidationErrors)
{
    var title = string.Format("Entity of type \"{0}\" in state \"{1}\"
                has the following validation errors:",
        eve.Entry.Entity.GetType().Name, eve.Entry.State);
    System.Diagnostics.Debug.WriteLine(title);
    var errors = new List<string>();
    foreach (var ve in eve.ValidationErrors)
    {
        var error = string.Format("- Property: \"{0}\", Error: \"{1}\"",
            ve.PropertyName, ve.ErrorMessage);
        errors.Add(error);
        System.Diagnostics.Debug.WriteLine(error);
    }
}
return Request.CreateErrorResponse(HttpStatusCode.Conflict, 
         < I want to return the header and detail as an anonymous object >);

它检查我的每个实体错误,打印调试消息,创建标题和详细信息列表。

如何将变量 title 和 errors 作为匿名对象并将其放入列表中以便返回它们?

最佳答案

How can I make a list in C# that contains an anonymous object?

好吧,一种懒惰的方法是:作为object:

var list = new List<object>();
//...
list.Add(new { Foo = 123, Bar = "abc" });

虽然这不是很有用。所以也许问题是“如何制作一个匿名类型的列表”;稍微有点棘手——你有点需要使用一个实例来说服编译器注入(inject) T:

var list = Enumerable.Repeat(new { Foo = 123, Bar = "abc" }, 0).ToList();
//...
list.Add(new { Foo = 456, Bar = "def" });

(注意顶行的列表是空的;那个假实例只是编译器的模板)

但同样,这仍然最好保存在本地。然后你说“我想回来”——现在那里才是真正有问题的地方。基本上,您不能typed 返回它。您可以返回 object 或非泛型 IList - 但不是匿名类型,因此对调用者没有任何用处。

基本上,在这一点上我会说:“不要”。相反,创建一个常规类型,并将其公开为该类型。匿名类型在创建它们的方法之外不能很好地工作(有一些小的警告,如数据绑定(bind)和序列化,在这些地方是可以的)。

关于c# - 如何制作包含匿名对象的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18249761/

相关文章:

c# - 如何在 FCKeditor 中*动态*更改图片上传路径

c# AudioFingerprinting 和局部敏感散列

PocketPC Windows CE 上的 C# 扩展方法

c# - 如何使用 Selenium 或其他工具操作 Chrome 扩展的小部件?

c# - 我关于在循环中动态创建标签的代码不起作用,只出现一个

c# - 防止数据绑定(bind) DataGridView 在编辑时进行排序

c# - EF 的 ExecuteSqlCommand 总是返回 -1

c# - 如何在 C# 中在运行时转换泛型类型

javascript - 在 Javascript 中使用 AES 加密文本,然后在 C# WCF 服务中解密

c# - 许多神奇的数字