【发布时间】:2014-12-17 07:07:20
【问题描述】:
我有多个具有共同基类型的类。我想要一个将基类型的任何子类作为参数的委托。我把它想象成这样,但这不起作用:
private delegate void ActionDelegate(BaseAction action);
class ChildAction : BaseAction
{
}
public static class SomeOtherClass
{
public void ProcessChildAction(ChildAction childAction)
{
}
public void Main()
{
ChildAction childAction = new ChildAction();
ActionDelegate actionDelegate = ProcessChildAction;
actionDelegate(childAction);
}
}
我试过了:
private delegate void ActionDelegate<T>(T action);
但这似乎会让任何类型的类通过,我只想要BaseAction 的任何子类。即便如此,当我这样做时,我似乎无法编译它,所以我不确定这是否是正确的方法。
另外,我使用的是 Unity,所以我仅限于 C# 3.5。
【问题讨论】:
标签: c# generics unity3d delegates c#-3.0