2009-09-01 20 views
36

मेरे पास ऑब्जेक्ट पैरामीटर है और मुझे यह जांचने की आवश्यकता है कि ऑब्जेक्ट vb.net में निर्दिष्ट इंटरफ़ेस लागू करता है या नहीं। इसका परीक्षण कैसे करें?कोई ऑब्जेक्ट किसी इंटरफ़ेस को लागू करता है

धन्यवाद।

+4

यह एक अच्छा सवाल है, Google में मेरी खोज क्वेरी से मेल खाता है और इसका उत्तर है। – CodingBarfield

उत्तर

52

उपयोग TypeOf...Is:

If TypeOf objectParameter Is ISpecifiedInterface Then 
    'do stuff 
End If 
+1

ध्यान दें कि यदि "सामान करना" ऑब्जेक्ट पर इंटरफ़ेस के सदस्य को आविष्कार करने की आवश्यकता है, तो संभवतः आप 'As' का उपयोग करना चाहते हैं और फिर ऑब्जेक्ट 'IsNot कुछ भी नहीं' सुनिश्चित करना चाहते हैं। (यह एक अनावश्यक दूसरी कास्ट रोकता है।) – bobbymcr

3

requiredInterface.IsAssignableFrom (representedType)

दोनों requiredInterface और representedType प्रकार

3

मैं भी स्कॉट Hansleman द्वारा इस article पाया इस के साथ विशेष रूप से उपयोगी होने के लिए कर रहे हैं। इस रिपोर्ट में उन्होंने सिफारिश की गई है

सी #

if (typeof(IWhateverable).IsAssignableFrom(myType)) { ... } 

मैं कर समाप्त हो गया:

VB.Net

Dim _interfaceList As List(Of Type) = myInstance.GetType().GetInterfaces().ToList() 
If _interfaceList.Contains(GetType(IMyInterface)) Then 
    'Do the stuff 
End If 
0

मैं एक List(Of String) और TypeOf tmp Is IList रिटर्न False है। एक सूची (टी के) कई इंटरफेस को लागू करता है (IEnumerable, IList, ...) और सिर्फ एक जाँच VB में निम्नलिखित स्निपेट की आवश्यकता है:

If tmp.GetInterfaces().Contains(GetType(IEnumerable)) Then 
    // do stuff... 
End If 
1

यहाँ हैं कि कोई वस्तु चर निर्धारित करने के लिए "ओ एक आसान तरीका है "एक विशिष्ट इंटरफ़ेस लागू करता है" ISOMething ":

If o.GetType().GetInterfaces().Contains(GetType(ISomething)) Then 
    ' The interface is implemented 
End If 
संबंधित मुद्दे

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