Holen Sie sich das umgesetzt Typ aus einer generischen Basisklasse
-
21-09-2019 - |
Frage
I den Wortlaut des Titels kann völlig falsch, aber im Grunde genommen, ich habe die folgende Basisklasse:
public class ScheduleableService<T> : ServiceBase
where T : IJob
{
var x = typeof(T);
}
Die Umsetzung dieser ist so etwas wie:
public class MyScheduledService: ScheduleableService<MyScheduledJob>
{
//MyScheduledJob implements IJob
}
Im Grunde, was ich brauche, ist in meiner Basisklasse ScheduleableService, in der Lage sein Halt des MyScheduledService Typ- zu bekommen Gibt es eine Möglichkeit, dies zu tun, ohne sie im Vorbeigehen.
Die folgenden Werke, jedoch ist hässlich .....
public class ScheduleableService<T, S> : ServiceBase
where T : IJob
where S : ServiceBase
{
var x = typeof(T);
var y = typeof(S);
}
Umsetzung:
public class MyScheduledService: ScheduleableService<MyScheduledJob,
MyScheduledService>
{
//MyScheduledJob implements IJob
}
Lösung
this.GetType()
oder ich etwas fehlt?
Andere Tipps
MyScheduledService svc = this as MyScheduledService;
if (svc != null)
{
// it is a MyScheduledService, and you can work with svc
}
Aber warum würden Sie brauchen, um dies zu tun? Er weist möglicherweise auf einen Mangel in Ihrem Design. Die Basisklasse sollte nie etwas von abgeleiteten Typen wissen müssen.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow