Question

je le titre de libellé complètement faux, mais au fond, je la classe de base suivante:

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

La mise en œuvre de c'est quelque chose comme:

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

En fait, ce que je dois, est dans ma classe de base ScheduleableService, pour être en mesure de mettre la main sur la MyScheduledService type- Est-il possible que je peux le faire sans passer dans.

Les oeuvres suivantes, est cependant laid .....

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

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

Mise en oeuvre:

public class MyScheduledService: ScheduleableService<MyScheduledJob,
                                                     MyScheduledService>
{
    //MyScheduledJob implements IJob
}
Était-ce utile?

La solution

this.GetType() ou je manque quelque chose?

Autres conseils

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

Mais pourquoi auriez-vous besoin de faire cela? Il fait peut-être une lacune dans votre conception. La classe de base ne devrait jamais besoin de savoir quoi que ce soit sur les types dérivés.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top