मैं इकाई विशेषताओं की एक समस्या का उपयोग करता हूं। उदाहरण के लिए:
// interface for "ID" attribute of Company entity
public interface ICompany_ID {
Guid CompanyID{get;set;}
}
// interface for "Name" attribute of Company entity
public interace ICompany_Name {
string Name{get;set;}
}
// interface for "Logo" attribute of Company entity
public interface ICompany_Logo {
byte[] Logo{get;set;}
}
// interface for all attributes of Company entity
public interface ICompany : ICompany_ID, ICompany_Name, ICompany_Logo { }
// base class for classes based on Company entity
public abstract class CompanyBase : ICompany_ID {
// implementation of ICompany_ID interface
}
// class for all attributes of Company entity
public class Company : ICompany {
// implementation of ICompany interface (all attributes)
}
// class for Company name lookup
public class CompanyNameLookup : CompanyBase, ICompany_Name {
// implementation of ICompany_Name interfade
}
यह उखड़ जाती हैं मुझे अलग अलग संस्थाओं के विभिन्न विशेषताओं के साथ काम करने की अनुमति है और सभी टाइप-सुरक्षित है। हालांकि, आपकी डेटा-परत को इस परिदृश्य का समर्थन करना चाहिए।
अगला तरीका लुकअप कक्षाओं की गतिशील रचना है, लेकिन यह अधिक जटिल है। दूसरी तरफ, यह बहुत अधिक लचीला है।
संपादित करें: तब चयन उदाहरण के लिए हो सकता है:
var companies = (from c in db.Table<ICompany>()
order by c.Name
select new CompanyNameLookup { ID = c.ID, Name = c.Name }
).ToList();
या danymicly बनाया प्रकार के लिए:
var companies = (from c in db.Table<ICompany>()
order by c.Name
select DynamicTypeFactory.New<ICompany_ID>(c.Id).And<ICompany_Name>(c.Name).Create()
).ToList();
DynamicTypeFactory
स्थिर विधि New
और danymic के लिए धाराप्रवाह इंटरफेस के साथ वर्ग है रन-टाइम पर निर्माण कक्षाएं।
मैं कुछ और अधिक "पागल" सोच रहा था जैसे खोज परिणाम को प्रदर्शन में केवल एक तत्व के रूप में। मैं एक ग्रिड और वर्तमान मौसम सारांश में डायरी अनुस्मारक की एक सूची भी चाहूंगा। क्या मैं विशेष रूप से उस फॉर्म या वेब पेज के लिए MyComplexFormViewModel क्लास में अपनी कंपनी सर्च रिसेट, वेदरसमरी और रिमाइंडरलिस्ट को एकत्र करूंगा? – Michael
@ माइकल - उस परिदृश्य में मैं शायद एक कंटेनर व्यू बनाउंगा जिसमें कंपनीशर्च रिसेट, वेदरसमरी और रिमाइंडरलिस्ट – Kirschstein
@ किर्स्चस्टीन - एक "कंटेनर व्यू" है जो मैंने MyComplexFormViewModel विचार के साथ प्रस्तावित किया है या उससे अलग है? – Michael