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?