Получите реализованный тип из универсального базового класса.
-
21-09-2019 - |
Вопрос
Возможно, я совершенно неправильно сформулировал заголовок, но по сути у меня есть следующий базовый класс:
public class ScheduleableService<T> : ServiceBase
where T : IJob
{
var x = typeof(T);
}
Реализация этого примерно такая:
public class MyScheduledService: ScheduleableService<MyScheduledJob>
{
//MyScheduledJob implements IJob
}
По сути, мне нужно, чтобы в моем базовом классе Schedulabuebuebuebuebrice, чтобы иметь возможность завладеть типом MySchedService- есть ли я какой-нибудь способ сделать это, не пропуская его.
Следующие работы, однако, уродливы.....
public class ScheduleableService<T, S> : ServiceBase
where T : IJob
where S : ServiceBase
{
var x = typeof(T);
var y = typeof(S);
}
выполнение:
public class MyScheduledService: ScheduleableService<MyScheduledJob,
MyScheduledService>
{
//MyScheduledJob implements IJob
}
Решение
this.GetType()
или я что-то упускаю?
Другие советы
MyScheduledService svc = this as MyScheduledService;
if (svc != null)
{
// it is a MyScheduledService, and you can work with svc
}
Но зачем вам это нужно делать?Возможно, это указывает на недостатки вашего дизайна.Базовому классу никогда не нужно ничего знать о производных типах.
Не связан с StackOverflow