【发布时间】:2013-04-17 13:20:24
【问题描述】:
我有以下类定义:
public class Registry
{
private List<Action<IThing>> _thingActions = new List<Action<IThing>>();
public Register<TDerivedThing>(Action<TDerivedThing> thingAction)
where TDerivedThing : IThing
{
// this line causes compilation issue
_thingActions.Add(thingAction);
}
}
为什么这抱怨它不能将Action<TDerivedThing>分配给Action<IThing>,我应该如何解决这个问题?
【问题讨论】:
-
你不能,这不是类型安全的。
-
愚蠢的问题。 TDerivedThing 是否实现了接口?
-
这是一个协方差限制。见这里:stackoverflow.com/questions/1078423/…
-
大概你要遍历
_thingActions在一些IThing上运行它们?当您的IThing不是TDerivedThing时会发生什么? -
@StianStandahl 它确实......应该在哪里表示
标签: c#