En el constructor que tiene que decir
this.CategoryRef = new List<string>();
Todo lo que
public List<string> CategoryRef { get; set; }
hace es declarar un auto-propiedad de tipo List<string>
llamado CategoryRef
. Implícitamente detrás de esta propiedad automática hay un campo de respaldo, pero ese campo de respaldo recibe el valor predeterminado para los objetos de tipo List<string>
. Por lo tanto, de forma predeterminada, el campo de respaldo es null
y esta es la razón por la que debe establecerlo en el constructor (o en otro lugar, pero antes de usarlo por primera vez).
Finalmente, probablemente no deberías exponer al colocador públicamente. Como mínimo, es mejor decir
public List<string> CategoryRef { get; private set; }
Está seguro de querer clientes de su clase para poder asignar una nueva lista de CategoryRef
? Probablemente no.
Y en situaciones como esta, en realidad prefiero una propiedad manual para que pueda hacer que el campo de respaldo sea de solo lectura.
private readonly List<string> categoryRef = new List<string>();
public List<string> CategoryRef {
get {
return this.categoryRef;
}
}