相关疑难解决方法(0)

C#是否支持返回类型协方差?

我正在使用.NET框架,我真的希望能够创建一个我所有网站都使用的自定义类型的页面.当我尝试从控件访问页面时出现问题.我希望能够返回我的特定类型的页面而不是默认页面.有没有办法做到这一点?

public class MyPage : Page
{
    // My own logic
}

public class MyControl : Control
{
    public MyPage Page { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

c# covariance

76
推荐指数
2
解决办法
2万
查看次数

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# ×2

covariance ×2

generics ×1