How can I make a C# class instantiate another class in its constructor?

c#

Solution

`msg.Details` returns a `List` object. `List<T>` does not have an `Errors` property. You need to access a specific element in your list, and only then will you have your `Errors` property.

For example:

msg.Details[0].Error

In your code you might want to make sure that `msg.Details` contains elements before trying to access them, or better yet iterate over them in a `foreach` loop.

Problem

I created the following: ``` 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; } } ``` In my code I am using it like this: ``` 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: ``` The Ide recognizes msg.Details as being valid but when I try to write the second line I get: ``` 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 ``` Is there something I am doing wrong? I thought the way I had this set up that new Lists would be created when the first class was created.

Original source