2017-02-03 11 views
0

У меня есть объект, в котором будут обнаружены ошибки, а также логическое поле, указывающее, присутствовали ли какие-либо ошибки вообще. Класс выглядит следующим образом.Поле коллекции имеет значение null при экземпляре экземпляра класса

public class ValidationResult 
{ 
    public bool IsValid{ get; set; } 
    public List<string> Errors { get; set; } 
} 

Я иду использовать экземпляр этого класса в методе проверки как таковой

public class ValidationService 
{ 
    // This instance will hold the errors if there are any 
    ValidationResult myValidationResult = new ValidationResult(); 

    public void ValidationMethod() 
    { 
     // Validation takes place here 
     ... 
     // Some errors occurred to lets add then to the instance of the ValidationResult object 
     myValidationResult.IsValid = false; 
     myValidationResult.Errors.Add("An error occurred here are the details"); 
    } 
} 

Проблема заключается в том, что сбор ошибок в экземпляре myValidationResult равна нулю? Почему это? Я создал экземпляр класса, и существует логическое свойство IsValid, но коллекция Errors - null.

+0

Список не инициализирована. public class ValidationResult { public bool IsValid {get; задавать; } public List Errors {get; задавать; } public ValidationResult() { Errors = new Список (); } –

ответ

3

Вы должны инициализировать свои ошибки свойства:

public class ValidationResult 
{ 
    public ValidationResult() 
    { 
      Errors = new List<string>(); 
    } 

    public bool IsValid{ get { return (Errors.Count() == 0); } } 
    public List<string> Errors { get; set; } 
} 
+0

И выясните, к чему вы хотите свойству IsValid по умолчанию. Если он не установлен, по умолчанию будет установлено значение false. – JuanR

+0

Большое спасибо. Я чувствую себя идиотом. Поле «Ошибки» является ссылочным типом, поэтому его необходимо инициализировать. Если я хочу, чтобы значение свойства IsValid было ложным, считается хорошей практикой оставить его по умолчанию или я должен явно установить его на false? – webworm

+0

Все зависит от того, как вы создаете свой класс. Например, одним из таких подходов было бы сделать флаг IsValid расчетным логическим, зависящим от количества ошибок. Я обновил свой ответ, чтобы отразить это. – JuanR

2

Только значения типов инициализируются по умолчанию. Ваш List<string> является ссылочным типом и имеет значение по умолчанию - null.

Посмотрите здесь немного больше информации:

https://msdn.microsoft.com/en-us/library/aa691171(v=vs.71).aspx

 Смежные вопросы

  • Нет связанных вопросов^_^