我有以下类的层次结构:
public abstract class SerializedDelegateBase<TDelegate, TTarget>
where TDelegate : class
where TTarget : class
{
...
}
public abstract class SerializedMBDelegateBase<TDelegate> : SerializedDelegateBase<TDelegate, MonoBehaviour> where TDelegate : class
{
...
}
public class ParameterizedSerializedDelegate<T> : SerializedMBDelegateBase<Action<T>> where T : EventArgs
{
...
}
最后:
[Serializable]
public class OnTransitionArg : EventArgs
{
public string TransitionName { set; get; }
}
[Serializable]
public class OnTransitionDelegate : ParameterizedSerializedDelegate<OnTransitionArg> { }
现在由于一些奇怪的原因,我得到"非泛型类型'ParameterizedSerializedDelegate'不能与类型参数一起使用"当我从ParameterizedSerializedDelegate
继承
OnTransitionDelegate
上我不知道为什么。
谁知道?
谢谢!
编辑:我可能应该提到,这些类在不同的文件中。我只是在一个文件中尝试了一个最小但类似的通用参数设置,它工作了!-我不知道我的实际设置有什么不同…
似乎我正在编辑'另一个'版本的ParameterizedSerializedDelegate
文件-所以一个VS正在看的是不同的。
@vexe的解决方案为我工作,但我找出了我所做的复制它(解释将使用原始问题类型名称)。
在VS2013中,当您使用CTRL-.
快捷菜单而不注意时,可能会发生这种情况。而不是选择"添加<<命名空间>>",可以选择"Generate class for…",这将创建一个名为ParameterizedSerializedDelegate
的新存根类,与OnTransitionDelegate
在同一文件夹中。
令人困惑的是,如果你在上面的例子中点击ParameterizedSerializedDelegate
上的F12
(转到定义),它会找到它的通用版本并带你到那里-即使该名称空间在该文件中不可用。