Pergunta

Eu posso redigir o título completamente errado, mas basicamente tenho a seguinte classe base:

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

A implementação disso é algo como:

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

Basicamente, o que eu preciso está na minha classe base Scheduleables Service, para poder se apossar do tipo MyScheduledService- existe da maneira que eu possa fazer isso sem passá-lo.

Os seguintes trabalhos, no entanto, são feios .....

public class ScheduleableService<T, S> : ServiceBase
    where T : IJob
    where S : ServiceBase
{

    var x = typeof(T);
    var y = typeof(S);
}

implementação:

public class MyScheduledService: ScheduleableService<MyScheduledJob,
                                                     MyScheduledService>
{
    //MyScheduledJob implements IJob
}
Foi útil?

Solução

this.GetType() Ou estou perdendo alguma coisa?

Outras dicas

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

Mas por que você precisaria fazer isso? Possivelmente aponta para uma deficiência em seu design. A classe base nunca deve precisar saber nada sobre tipos derivados.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top