【问题标题】:Generic delegates, C# 3.5通用委托,C# 3.5
【发布时间】: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


    【解决方案1】:

    使用约束:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-03
      • 2011-04-24
      • 2015-11-03
      • 1970-01-01
      相关资源
      最近更新 更多