tipos de retorno covariantes c # utilizando genéricos

O código abaixo é a única maneira de implementar tipos de retorno covariantes?

public abstract class BaseApplication<T> {
    public T Employee{ get; set; }
}

public class Application : BaseApplication<ExistingEmployee> {}

public class NewApplication : BaseApplication<NewEmployee> {}

Quero poder construir um Aplicativo ou um NewApplication e fazer com que ele retorne o tipo de Funcionário apropriado da propriedade Empregado.

var app = new Application();
var employee = app.Employee; // this should be of type ExistingEmployee

Acredito que esse código funcione bem, mas fica realmente desagradável quando tenho várias propriedades que exigem o mesmo comportamento.

Existem outras maneiras de implementar esse comportamento? Genéricos ou não?

questionAnswers(7)

yourAnswerToTheQuestion