避免使用委托

本文关键字: | 更新日期: 2023-09-27 18:14:54

我想避免每次调用MarkAsPermanent方法时都强制转换委托。

这是我的委托声明:

public delegate void Callback<T, U>(T arg1, U arg2);

我需要调用的方法签名:

class MessengerManager {
    static public void MarkAsPermanent(string eventType, Delegate _messageHandler) { ... }
}

我现在称呼它的方式:

MessengerManager.MarkAsPermanent( "level finished", ( Callback<LevelInfo, GameDataType> ) UpdateData );

是否可以这样做:

MessengerManager.MarkAsPermanent( "level finished", UpdateData );

我想避免每次都输入( Callback<LevelInfo, GameDataType> )

避免使用委托

一个显而易见的答案:写一个帮助器方法:

public static class LevelMessengerManager
{
    public static void MarkAsPermanent(string eventType,
        Callback<LevelInfo, GameDataType> messageHandler)
    {
        MessengerManager.MarkAsPermanent(eventType, messageHandler);
    }
}

如果你愿意,你可以让它泛型。然后把它命名为:

LevelMessengerManager.MarkAsPermanent("level finished", UpdateData);

这是假设MessengerManager的声明真的必须使用Delegate参数-你能改变该方法吗?

这样行吗?

class MessengerManager {
    static public void MarkAsPermanent<T, U>(string eventType,  Callback<T, U> _messageHandler) { ... }
}
相关文章:
  • 没有找到相关文章