سؤال

إذا لديك مجموعة من الفئات التي تقوم بتنفيذ كل واجهة.

interface IMyinterface<T>
{
    int foo(T Bar);
}

وأريد أن يشق كل منهم في قائمة وتعداد من خلالهم.

 List<IMyinterface> list
 foreach(IMyinterface in list)
 // etc...  

ولكن المترجم يريد أن يعرف ما هو T. هل يمكنني فعل هذا؟ كيف أتغلب على هذه المسألة؟

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

المحلول

وليس هناك نوع IMyinterface لا يوجد سوى نوع IMyinterface`1 التي سوف تتطلب وسيطة نوع. هل يمكن خلق نوع IMyinterface: -

interface IMyinterface { ... }

وثم ترث منه

interface IMyinterface<T> : IMyinterface { ... }

وأنت في حاجة لنقل أي أعضاء كنت ترغب في استخدامها في حلقة foreach للتعريف IMyinterface.

نصائح أخرى

إذا كنت تخطط لاستدعاء الأسلوب مع T في التوقيع، والجواب هو أنك لا تستطيع ذلك. خلاف ذلك يمكنك القيام به كما يقترح anthonywjones

وأنت لا تزال بحاجة لنقول للمترجم ما T هو في بعض الوقت، ولكن فقط ما طلبتم يمكن القيام به:

 interface IMyinterface
{
    int foo<T>(T Bar);
}

List<IMyinterface> list = new List<IMyinterface>();
foreach(IMyinterface a in list){}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top