我创建了以下内容:
public class HttpStatusErrors
{
public HttpStatusErrors()
{
this.Details = new List<HttpStatusErrorDetails>();
}
public string Header { set; get; }
public IList<HttpStatusErrorDetails> Details { set; get; }
}
public class HttpStatusErrorDetails
{
public HttpStatusErrorDetails()
{
this.Errors = new List<string>();
}
public string Error { set; get; }
public IList<string> Errors { set; get; }
}
在我的代码中我使用它是这样的:
var msg = new HttpStatusErrors();
msg.Header = "Validation Error";
foreach (var eve in ex.EntityValidationErrors) {
msg.Details. // Valid so far
msg.Details.Error // Gives the error below:
Ide将msg.Details视为有效,但当我尝试编写第二行时,我得到:
Error 3 'System.Collections.Generic.IList<TestDb.Models.Http.HttpStatusErrorDetails>'
does not contain a definition for 'Error' and no extension method 'Error' accepting a first
argument of type 'System.Collections.Generic.IList<TestDb.Models.Http.HttpStatusErrorDetails>'
could be found (are you missing a using directive or an assembly reference?)
C:\K\ST136 Aug 16\WebUx\Controllers\ProblemController.cs 121 33 WebUx
我做错了吗?我认为我设置的方式是在创建第一个类时创建新的列表。
答案 0 :(得分:10)
msg.Details
会返回List
个对象。 List<T>
没有Errors
属性。您需要访问列表中的特定元素,然后才能拥有Errors
属性。
例如:
msg.Details[0].Error
在您的代码中,您可能希望在尝试访问它们之前确保msg.Details
包含元素,或者更好地在foreach
循环中迭代它们。
答案 1 :(得分:0)
详细信息是一个集合。属性Error
属于集合Details中的项目。该集合详细信息
Error
答案 2 :(得分:0)
您正试图转到Details
IList<HttpStatusErrorDetails>
。{/ p>
如果你想浏览该列表中的项目,你需要仔细检查它们 例如
msg.Details[number].Errors
或
foreach(HttpStatusErrorDetails err in msg.Details)
{
err.Errors
}