W konstruktorze trzeba powiedzieć
this.CategoryRef = new List<string>();
Wszystko to
public List<string> CategoryRef { get; set; }
robi to zadeklarować auto właściwość typu List<string>
nazwie CategoryRef
. Niejako za tą właściwością automatyczną jest pole zaplecza, ale to pole podrzędne otrzymuje wartość domyślną dla obiektów typu List<string>
. Dlatego domyślnym polem jest null
i dlatego musisz ustawić je w konstruktorze (lub w innym miejscu, ale przed użyciem po raz pierwszy).
Na koniec prawdopodobnie nie powinno się ujawniać publiczności. Jako minimum, to lepiej powiedzieć
public List<string> CategoryRef { get; private set; }
Czy naprawdę chcą klienci swojej klasie, aby móc przypisać nową listę CategoryRef
? Prawdopodobnie nie.
W takich sytuacjach wolę własność ręczną, więc mogę utworzyć pole odczytu tylko do odczytu.
private readonly List<string> categoryRef = new List<string>();
public List<string> CategoryRef {
get {
return this.categoryRef;
}
}