यह जानने का आसान तरीका क्या है कि एक प्रकार का पैरा सी # 2.0 में इंटरफ़ेस लागू करता है या नहीं?

उदाहरण के लिए, एक प्रकार की पैरा विधि दी गई है, मैं बोल्ड में भाग की तरह कुछ ढूंढ रहा हूं

void MyMethod< T >() {
if ( typeof(T).Implements( IMyInterface ) ) {

  //Do something   

else

  //Do something else 

}

सी # 3.0 का उपयोग करने वाले एवरों का भी स्वागत है, लेकिन पहले .NET 2.0 को छोड़ दें;)

0

3 उत्तर

अभी उपयोग करने की कोशिश की है

if( typeof(T).Equals(typeof(IMyInterface) ) 
     ...

और यह भी काम करता है, लेकिन आपका जवाब अधिक मजबूत लगता है और जो मैं खोज रहा था। धन्यवाद!

0
जोड़ा
यह मेरे विशिष्ट मामले में मेरे लिए काम करता है, लेकिन व्यवहार वह है जिसे आप वर्णन करते हैं: यदि आप जानना चाहते हैं कि कोई वस्तु IMyInterface लागू करती है, तो यह काम नहीं करती है, लेकिन यह कहने के लिए कि टाइप टी एक IMyInterface है। सुधारों के लिए धन्यवाद!
जोड़ा लेखक Ricardo Amores, स्रोत
ऐसा होता है? यह केवल टी का काम करना चाहिए विशेष रूप से IMyInterface
जोड़ा लेखक James Curran, स्रोत

मुझे लगता है

if (typeof (IMyInterFace).IsAssignableFrom(typeof(T))

यह भी काम करना चाहिए: लेकिन मुझे कोई फायदा नहीं दिख रहा है ...

0
जोड़ा

Type.IsAssignable से

if(typeof(IMyInterface).IsAssignableFrom(typeof(T)))
{
 //something
}
else
{
 //something else
}
0
जोड़ा