从通用基类获取实现的类型

时间:2010-02-19 14:10:36

标签: c# generics inheritance base-class

我可能完全错误地标题,但基本上,我有以下基类:

public class ScheduleableService<T> : ServiceBase
        where T : IJob
{
        var x = typeof(T);
}

这的实现类似于:

public class MyScheduledService: ScheduleableService<MyScheduledJob>
{
    //MyScheduledJob implements IJob
}

基本上,我需要的是,在我的基类ScheduleableService中,能够获得MyScheduledService类型 - 有没有什么方法可以做到这一点而不传递它。

以下作品很难看......

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
}

2 个答案:

答案 0 :(得分:11)

this.GetType()或者我遗失了什么?

答案 1 :(得分:0)

MyScheduledService svc = this as MyScheduledService;
if (svc != null)
{
    // it is a MyScheduledService, and you can work with svc
}

但你为什么要这样做呢?它可能表明您的设计存在缺陷。基类应该永远不需要知道有关派生类型的任何信息。