4

我创建了以下内容:

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

有什么我做错了吗?我认为我设置的方式是在创建第一个类时创建新的列表。

4

3 回答 3

10

msg.Details返回一个List对象。List<T>没有Errors财产。您需要访问列表中的特定元素,然后才能拥有您的Errors财产。

例如:

msg.Details[0].Error

在您的代码中,您可能希望在尝试访问它们之前确保msg.Details包含元素,或者更好地在循环中迭代它们foreach

于 2013-08-15T10:24:51.637 回答
0

细节是一个集合。该属性Error属于集合详细信息中的一个项目。Error该集合没有属性详细信息

于 2013-08-15T10:25:40.167 回答
0

你绑去Details哪个是一个IList<HttpStatusErrorDetails>

例如,如果您想浏览该列表中的项目,则需要浏览它们

msg.Details[number].Errors

或者

foreach(HttpStatusErrorDetails err in msg.Details)
{
    err.Errors
}
于 2013-08-15T10:25:49.313 回答