ما هي الطريقة الأسهل لمعرفة ما إذا كان النوع المعلم ينفذ واجهة في c# 2.0؟

StackOverflow https://stackoverflow.com/questions/96027

  •  01-07-2019
  •  | 
  •  

سؤال

على سبيل المثال، بالنظر إلى طريقة type param، فإنني أبحث عن شيء مثل الجزء بالخط العريض

باطلة MyMethod< T >() {
لو ( typeof(T).التنفيذ( IMyInterface ) ) {

  //Do something   

آخر

  //Do something else 

}

نرحب أيضًا بالإجابات التي تستخدم C# 3.0، ولكن قم أولاً بإسقاط إجابات .NET 2.0 من فضلك؛)

هل كانت مفيدة؟

المحلول

Type.IsAssignableFrom

if(typeof(IMyInterface).IsAssignableFrom(typeof(T)))
{
  // something
}
else
{
  // something else
}

نصائح أخرى

أظن

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

يجب أن تعمل أيضًا:لكني لا أرى أي ميزة..

Ï لقد حاولت للتو استخدام

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

ويعمل أيضًا، لكن إجابتك تبدو أقوى وكانت ما كنت أبحث عنه.شكرًا!

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top