【发布时间】:2013-12-12 18:17:15
【问题描述】:
我正在编写一个网络应用程序,其中对象由 id 请求并通过委托回调返回:
public static void requestById<ModelType>(T id, Action<ModelType> callback)
where ModelType : AbstractModel<T>
{
}
为方便起见,我有一个方法可以一次请求多个对象:
public static void requestByIds<ModelType>
(List<T> ids, Action<List<ModelType>> callback)
where ModelType : AbstractModel<T>, new()
{
}
再往下,我有一个具有多个子对象的抽象模型对象,以及一个请求它的子对象的方法:
public abstract void requestSections(Action<List<AbstractSection>> callback);
然后是具体类中的实现:
public override void requestSections(Action<List<AbstractSection>> callback)
{
Section.requestByIds<Section>(this.sectionIds, callback);
}
我突然找到了代表
Action<List<AbstractSection>>
不兼容
Action<List<Section>>
这是 C# 中逆变的限制吗?有什么解决方法可以让我的覆盖方法起作用吗?谢谢
【问题讨论】:
标签: c# list action contravariance