سؤال

قد قمت بصياغة العنوان بشكل خاطئ تمامًا ، لكن في الأساس ، لدي الفئة الأساسية التالية:

public class ScheduleableService<T> : ServiceBase
        where T : IJob
{
        var x = typeof(T);
}

تنفيذ هذا شيء مثل:

public class MyScheduledService: ScheduleableService<MyScheduledJob>
{
    //MyScheduledJob implements IJob
}

في الأساس ، ما أحتاجه ، هو في جدولي من الفصول الأساسية ، لتكون قادرًا على الحصول على نوع myscheduledservice- هل هناك أي طريقة يمكنني القيام بذلك دون أن يتم نقلها.

الأعمال التالية ، ومع ذلك قبيحة .....

public class ScheduleableService<T, S> : ServiceBase
    where T : IJob
    where S : ServiceBase
{

    var x = typeof(T);
    var y = typeof(S);
}

التنفيذ:

public class MyScheduledService: ScheduleableService<MyScheduledJob,
                                                     MyScheduledService>
{
    //MyScheduledJob implements IJob
}
هل كانت مفيدة؟

المحلول

this.GetType() أو أفتقد شيئًا؟

نصائح أخرى

MyScheduledService svc = this as MyScheduledService;
if (svc != null)
{
    // it is a MyScheduledService, and you can work with svc
}

ولكن لماذا تحتاج إلى القيام بذلك؟ ربما يشير إلى نقص في التصميم الخاص بك. يجب ألا تحتاج الفصل الأساسي أبدًا إلى معرفة أي شيء عن الأنواع المشتقة.

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