Prendi il tipo implementato da una classe base Generico
-
21-09-2019 - |
Domanda
I maggio del formulato il titolo completamente sbagliato, ma in fondo, ho la seguente classe di base:
public class ScheduleableService<T> : ServiceBase
where T : IJob
{
var x = typeof(T);
}
L'implementazione di questo è qualcosa di simile:
public class MyScheduledService: ScheduleableService<MyScheduledJob>
{
//MyScheduledJob implements IJob
}
In sostanza, quello che mi serve, è nella mia classe di base ScheduleableService, per essere in grado di entrare in possesso del tipo- MyScheduledService C'è un modo che io possa fare questo senza passare in.
I seguenti lavori, però è brutto .....
public class ScheduleableService<T, S> : ServiceBase
where T : IJob
where S : ServiceBase
{
var x = typeof(T);
var y = typeof(S);
}
applicazione:
public class MyScheduledService: ScheduleableService<MyScheduledJob,
MyScheduledService>
{
//MyScheduledJob implements IJob
}
Soluzione
this.GetType()
o mi manca qualcosa?
Altri suggerimenti
MyScheduledService svc = this as MyScheduledService;
if (svc != null)
{
// it is a MyScheduledService, and you can work with svc
}
Ma perché avete bisogno di fare questo? E 'forse punta a una carenza nella progettazione. La classe di base dovrebbe mai bisogno di sapere nulla di tipi derivati.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow