आसान होना चाहिए ...
वर्ग बेस {} class Foo: Base {} सार्वजनिक बूल बार (प्रकार टी) {// वापसी ??? // NB: फू के बारे में कुछ भी नहीं जानना चाहिए, बस बेस} आश्रित करें। दर (बार (टाइपफ़ (आईआईएनमेरेएबल & lt; Foo & gt;)); Assert.False (बार (टाइपफ़ (IEnumerable & lt; बेस & gt;)); Assert.False (बार (टाइपफ (स्ट्रिंग)); Assert.False (बार (टाइपफ (फू));
बस सवाल का जवाब देने के लिए क्यों दूसरा एक झूठा होना चाहिए (वास्तव में - इससे कोई फर्क नहीं पड़ता , कारण बार तर्क कभी भी IEnumerable & lt; बेस & gt;
) नहीं होगा।
मैं FluentNhibernate स्वत: मैपिंग कन्वेंशन लिखने का प्रयास कर रहा हूं जो मेरे वर्ग एन्यूमरेशन को पूर्णांक में मैप करता है। , लेकिन जब मैं IEnumerable & lt; EnumerationChild & gt;
(मेरे मामले में - User.Roles) मैप करना चाहता था, तब चीजें नीचे चली गईं।
सार्वजनिक वर्ग संवीक्षा सम्मेलन: IUserTypeConvention {निजी स्टेटिक केवल पढ़ने के लिए OpenType = typeof टाइप करें (एन्यूमरटाइप टाइप & lt; & gt;); सार्वजनिक शून्य लागू करें (आईपीप्रोटी इन्स्टेंस उदाहरण) {// यह एटीएम बोर कर दिया गया है, Ienumerable case var को बंद करना आवश्यक है टाइप करें = OpenType.MakeGenericType (instance.Property.PropertyType ); instance.CustomType (closedType); } सार्वजनिक शून्य स्वीकार करें (IAcceptanceCriteria & lt; IPropertyInspector & gt; मापदंड) {मापदंड। एक्सपेक्ट (एक्स = & gt; टाइपफ्यूम (एन्यूमरेशन)। आइएसएस्साइनेबलफॉम (एक्स। प्रॉपर्टी.प्रॉपर्टी टाइप) || टाइपफ (आईआईएनमेरेबल & लेफ्टिनेंट; एन्यूमरेशन & gt;) .IsAssignableFrom (x.Property.PropertyType )); }}
आप उपयोग कर सकते हैं Type.IsAssignableFrom (Type)
। हालांकि, आपका प्रश्न वास्तव में स्पष्ट नहीं है - आप एक प्रकार को निर्दिष्ट कर रहे हैं, लेकिन आपको दो की ज़रूरत है ... किस प्रकार बार
का मतलब चेक
के विरुद्ध?
ध्यान दें कि उत्तर .NET 3.5 और .NET 4 के बीच, सामान्य संप्रभु के कारण- .NET 3.5 में, उदाहरण के लिए, एक सूची & lt; Foo & gt; < / कोड> नहीं
IEnumerable & lt; बेस & gt;
के लिए असाइन किया गया है, लेकिन .NET 4 में यह है।
संपादित करें: यह एक प्रोग्राम है जो True को प्रिंट करता है, सच है, झूठी, झूठी मुझे यकीन नहीं है कि आप दूसरे व्यक्ति को झूठी होने की उम्मीद क्यों कर रहे हैं:
सिस्टम का उपयोग करना; System.Collections का उपयोग कर; System.Collections.Generic का उपयोग कर; क्लास बेस {} क्लास फू: बेस {} क्लास टेस्ट {स्टैटिक बूल बार (टाइप टी) {रिटर्न टाइपफॉर्म (आईआईएनमेरेबल & लेफ्टिनिनेट; बेस & gt;)। आईएसएस्ग्नेबलफॉम (टी); } स्थिर शून्य मुख्य () {कंसोल.प्रकाशलाइन (बार (टाइपफ (आईआईएनमेरेबल & lt; Foo & gt;)); Console.WriteLine (बार (typeof (IEnumerable & LT; बेस & gt;))); Console.WriteLine (बार (typeof (स्ट्रिंग))); Console.WriteLine (बार (typeof (फू))); }}
Comments
Post a Comment