Większość (jeśli nie wszystkie) moje jednostki POCO mają strukturę wirtualną. Potrzebuję tych funkcji, aby były wirtualne, tak aby obiekty mogły być obciążone.Jak uniknąć wywoływania funkcji wirtualnej w konstruktorze?
Jeśli zainicjuję Accommodations
w konstruktorze, będę wywoływał funkcję wirtualną w konstruktorze, co jest złą praktyką.
Ale jak mogę zainicjować Accommodations
, jeśli nie w konstruktorze?
public class Venue
{
public Venue()
{
Accommodations = new HashSet<Accommodation>();
}
public virtual ICollection<Accommodation> Accommodations { get; set; }
}
punkt leniwy załadunku jest _nie_ aby go zainicjować w ogóle, dopóki pierwsze użycie. –
@JohnWillemse Jeśli pozwolę mu null, otrzymam wyjątek null w mojej opinii. –
Nie, testujesz na wartość zerową i inicjalizujesz ją w razie potrzeby. Zobacz poniżej odpowiedź Willema Duncana na demonstrację użycia. Być może my mylimy różne wzory tutaj, zgodnie z komentarzem Daniela dotyczącym tej samej odpowiedzi. –