Etki Alanı Modeli için en iyi uygulama nedir? Kök agregası ve alt öğeleri var. Aşağıdaki kodu gibi şey: Şu an üzerinde çalıştığım NHibernate
class Order
{
IList<OrderLine> Lines {get;set;}
}
class OrderLine
{
}
Şimdi istediğim satırları kontrol etme Sipariş. Bunun gibi bir şey: NHibernate hatları alanına doğrudan eşleştirilmiş
class Order
{
private IList<OrderLine> lines = new List<OrderLine>();
OrderLine[] Lines {get {return this.lines;}}
void AddLine(OrderLine line)
{
this.orders.Add(line);
{
}
:
class Order
{
OrderLine[] Lines {get;}
void AddLine(OrderLine line);
}
Şu an için aşağıdaki deseni kullanıyor. Şimdi
sorular ... Böyle durumlarda ne uyguluyorsunuz
- ?
- Herhangi biri şu yöntemleri kullanır: public IEnumerable GetLines()
- Özellik için ne tür bir özellik kullanıyorsunuz? ReadOnlyCollection veya IEnumerable olabilir;
- Sormak için en iyi yer burası olmayabilir mi? Lütfen öner.
Güncelleme: NET 3.5 kullanıyorsanız
class Order
{
private List<OrderLine> lines = new List<OrderLine>();
IEnumerable<OrderLine> Lines { get { return this.lines; } }
void AddLine(OrderLine line)
{
this.orders.Add(line);
}
}
tüm arama olsun: Kullandığım kalıptır
ilişkin "Order.Lines [0] yeni sipariş satırı() =;" olamaz. Verilen dizinin Çizginin yeni kopyasına her eriştiğinizde (bundan hoşlanmıyorum ...). IEnumerable, liste işlevsellik eksikliği var, ben saymak, endeks ile erişim anlamına gelir. Tabii ki, LINQ bunu kapsar. Teşekkür ederiz! –
Burada, Lines özelliğini bir Listesine yayınlayabilir ve koleksiyonu bu şekilde değiştirebilirsiniz ... –
Evet, ancak döküm işlemini yapmanız gerekir. Korumayla ilgili değil, koleksiyona yapmanıza izin verdiğinizi göstermekle ilgili. Bu ekstra güvenlik istiyorsanız, this.lines.AsReadonly() öğesini geri yükleyebilirsiniz. – gcores