Obtener el tipo aplicado de una clase base genérica
-
21-09-2019 - |
Pregunta
se me permite de redactado el título completamente equivocado, pero básicamente, tengo la siguiente clase base:
public class ScheduleableService<T> : ServiceBase
where T : IJob
{
var x = typeof(T);
}
La aplicación de esto es algo como:
public class MyScheduledService: ScheduleableService<MyScheduledJob>
{
//MyScheduledJob implements IJob
}
Básicamente, lo que necesito, está en mi ScheduleableService clase base, para poder controlar la tipo- MyScheduledService ¿Hay alguna manera de hacer esto sin pasar adentro.
Los siguientes obras, sin embargo es feo .....
public class ScheduleableService<T, S> : ServiceBase
where T : IJob
where S : ServiceBase
{
var x = typeof(T);
var y = typeof(S);
}
aplicación:
public class MyScheduledService: ScheduleableService<MyScheduledJob,
MyScheduledService>
{
//MyScheduledJob implements IJob
}
Solución
this.GetType()
o me estoy perdiendo algo?
Otros consejos
MyScheduledService svc = this as MyScheduledService;
if (svc != null)
{
// it is a MyScheduledService, and you can work with svc
}
Pero ¿por qué se necesita para hacer esto? Es, posiblemente, apunta a una deficiencia en su diseño. La clase base no debe necesitar saber nada acerca de los tipos derivados.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow