避免使用委托
本文关键字: | 更新日期: 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) { ... }
}