每次调用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> )
。
答案 0 :(得分:2)
一个明显的答案:写一个辅助方法:
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
参数 - 您可以改变该方法吗?
答案 1 :(得分:0)
这有用吗?
class MessengerManager {
static public void MarkAsPermanent<T, U>(string eventType, Callback<T, U> _messageHandler) { ... }
}