泛型委托,C# 3.5

本文关键字:泛型 | 更新日期: 2023-09-27 18:34:23

我有多个具有通用基本类型的类。我想要一个将基类型的任何子类作为参数的委托。我把它想象成这样,但这不起作用:

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# 3.5

使用约束:

private delegate void ActionDelegate<T>(T action) where T : BaseAction;