相关疑难解决方法(0)

c#使用泛型的协变返回类型

下面的代码是实现协变返回类型的唯一方法吗?

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

public class Application : BaseApplication<ExistingEmployee> {}

public class NewApplication : BaseApplication<NewEmployee> {}
Run Code Online (Sandbox Code Playgroud)

我希望能够构造一个Application或NewApplication并让它从Employee属性返回适当的Employee类型.

var app = new Application();
var employee = app.Employee; // this should be of type ExistingEmployee
Run Code Online (Sandbox Code Playgroud)

我相信这段代码工作得很好,但是当我有几个需要相同行为的属性时,它变得非常讨厌.

有没有其他方法来实现这种行为?泛型或其他?

c# generics covariance

26
推荐指数
1
解决办法
6140
查看次数

标签 统计

c# ×1

covariance ×1

generics ×1