Obtenez le type mis en œuvre à partir d'une classe de base générique
-
21-09-2019 - |
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
}
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