डोमेन मॉडल में केवल पढ़ने वाली सूचियों के लिए सबसे अच्छा अभ्यास क्या है, जिस पर मैं काम कर रहा हूं, मूल और बाल संस्थाएं हैं। कुछ निम्न कोड की तरह:NHibernate
class Order
{
IList<OrderLine> Lines {get;set;}
}
class OrderLine
{
}
अब मैं चाहता हूँ लाइनों को नियंत्रित करने के लिए अपने आदेश। ऐसा ही कुछ:
class Order
{
private IList<OrderLine> lines = new List<OrderLine>();
OrderLine[] Lines {get {return this.lines;}}
void AddLine(OrderLine line)
{
this.orders.Add(line);
{
}
NHibernate लाइनों क्षेत्र के लिए सीधे मैप किया गया है:
class Order
{
OrderLine[] Lines {get;}
void AddLine(OrderLine line);
}
इस समय हम निम्नलिखित पद्धति का उपयोग कर रहे हैं।
अब सवाल ...
- आप ऐसी स्थितियों में क्या अभ्यास करते हैं?
- करता है किसी को भी उपयोग विधि: सार्वजनिक IEnumerable GetLines()
- आप संपत्ति के बदले प्रकार के रूप में प्रयोग कर रहे हैं क्या? पढ़ा जा सकता है केवल चयन या IENumerable;
- क्या यह पूछने का सबसे अच्छा स्थान नहीं है? कृपया सुझाव दें।
अद्यतन: IEnumerable जीत लगता है, फिर भी समाधान अभी भी सही नहीं है ...
के बारे में "Order.Lines [0] नई ऑर्डर लाइन() =," यह नहीं कर सकते। प्रत्येक बार जब आप लाइनों तक पहुंचते हैं तो सरणी की नई प्रति जारी की जाती है (मुझे यह पसंद नहीं है ...)। आईनेमेरेबल में सूची कार्यक्षमता की कमी है, मेरा मतलब है गणना, सूचकांक द्वारा उपयोग। बेशक, LINQ इसे शामिल करता है। धन्यवाद! –
यहां, आप अभी भी लाइन्स प्रॉपर्टी को सूची पर डाल सकते हैं और इस तरह से संग्रह को संशोधित कर सकते हैं ... –
हां, लेकिन आपको कास्टिंग करना है। यह सुरक्षा के बारे में इतना नहीं है लेकिन यह दिखाने के बारे में कि आपको संग्रह में क्या करने की अनुमति है। आप इसे वापस कर सकते हैं। लाइनें। जैसा कि आप अतिरिक्त सुरक्षा चाहते हैं। – gcores