2009-10-21 16 views
17

कोई भी निम्न श्रेणी घोषणा में where TEntity : class, IEntity, new() लाइन के साथ मेरी सहायता कर सकता है।"तेज" सी में तेज घोषणा में कीवर्ड

public abstract class BaseEntityManager<TEntity> 
     where TEntity : class, IEntity, new() 
+2

देखने और अपने प्रश्न है? –

+4

मुझे लगता है कि वह वाक्यविन्यास की व्याख्या के लिए पूछ रहा है। – Matt

उत्तर

28

where TEntity : ... सामान्य पैरामीटर TEntity लिए बाधाओं लागू होता है। इस मामले में, की कमी कर रहे हैं:

वर्ग: TEntity के तर्क के लिए एक संदर्भ प्रकार होना चाहिए
IEntity: तर्क है या IEntity इंटरफ़ेस
नई() को लागू करना चाहिए: तर्क एक सार्वजनिक parameterless निर्माता होना आवश्यक है

से http://msdn.microsoft.com/en-us/library/d5x73970.aspx

+0

यदि आप कुछ कोड जोड़ सकते हैं तो कोई भी आधार श्रेणी के रूप में बेसइन्टिटी मैनेजर का उपयोग कैसे कर सकता है जो शानदार होगा :) – niico

0

एक सामान्य प्रकार बाधा कहां है। वह पंक्तियां पढ़ती हैं कि टाइप टीएनटीटी एक मान प्रकार के विपरीत संदर्भ प्रकार होना चाहिए, इंटरफेस आईईएनटीटी को लागू करना चाहिए और इसमें एक कन्स्ट्रक्टर होना चाहिए जो कोई पैरामीटर नहीं लेता है।

http://msdn.microsoft.com/en-us/library/bb384067.aspx

4

where कीवर्ड के बाद वर्ग घोषणा जो भी लिखते सामान्य TEntity हो सकता है प्रतिबंधित। इस मामले में TEntity एक वर्ग (अर्थात यह int या DateTime की तरह एक मान प्रकार नहीं हो सकता है) होना चाहिए, और यह इंटरफ़ेस IEntity को लागू करना चाहिए। new() बाधा इंगित करता है कि इस वर्ग के अंदर तरीकों TEntity (जैसे new TEntity()) के प्रतिनिधित्व वाले सामान्य वर्ग के डिफ़ॉल्ट निर्माता

-1

प्रश्न क्या है फोन करने की क्षमता है?

मुझे लगता है कि सवाल क्या है मुझे शॉट पर ले जाने दो। बाधा यह सुनिश्चित करती है कि आप केवल सामान्य पैरामीटर के साथ बेसइन्टिटी मैनेजर को उपclass कर सकते हैं जो एक संदर्भ प्रकार है जो आईएनएनटीटी को लागू करता है और इसमें पैरामीटर रहित कन्स्ट्रक्टर होता है।

ई.एक्स।

public class Product : IEntity { 
    public Product() {} 
} 

public class Wrong { 
    public Wrong() {} 
} 

public class WrongAgain : IEntity { 
    private Wrong() {} 
} 


// compiles 
public ProductManager : BaseEntityManager<Product> {} 


// Error - not implementing IEntity 
public WrongManager : BaseEntityManager<Wrong> {} 


/Error - no public parameterless constructor 
public WrongAgainManager : BaseEntityManager<WrongAgain> {} 

link text

+0

"क्या कोई मुझे लाइन के साथ मदद कर सकता है ...?" यही तो प्रश्न है। यह स्पष्ट है कि वह क्या पूछ रहा है। –

संबंधित मुद्दे