我创建了以下代码:
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/