我有以下类的层次结构:
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> { }
现在出于一些奇怪的原因,当我从OnTransitionDelegate
我不知道为什么。
任何人
谢谢!
修改
我应该提一下这些类是在不同的文件中。我只是尝试了一个文件中的泛型参数的最小但相似的设置,它工作了! - 我不知道我真正的设置有什么不同......
答案 0 :(得分:2)
似乎我正在编辑ParameterizedSerializedDelegate
文件的“另一个”版本 - 所以VS看到的那个版本是不同的。
答案 1 :(得分:0)
@ vexe的解决方案对我有用但我找到了我做的重现它(解释将使用原始问题类型名称)。
在VS2013中,当您使用CTRL-.
快捷菜单而不注意时,可能会发生这种情况。不是选择“添加&lt;&lt;&lt;&gt;&gt;&gt;”,而是可以选择“为...生成类”,这将在与{{相同的文件夹中创建一个名为ParameterizedSerializedDelegate
的新存根类。 1}}。
令人困惑的是,如果您在上面的示例中点击了OnTransitionDelegate
(转到定义){@ 1}},它会找到它的通用版本并带您到那里 - 即使名称空间是在该文件中不可用。