我想创建一个如下图案:
namespace SharedUtilities
{
public partial class PartialClass
{
public void DoSomethingInteresting()
{
DoSomethingPlatformSpecific();
}
partial void DoSomethingPlatformSpecific();
}
}
但我想添加一个回调参数,以便我可以根据平台传入不同的回调。任何人都能指出我在正确的方向吗?我一直在阅读Action,EventHandler<>和委托,但我不确定在这种情况下使用哪一个。任何建议将不胜感激。
答案 0 :(得分:1)
有很多方法可以做到并处理这种情况,最简单的就是这样 -
namespace SharedUtilities
{
public partial class PartialClass
{
public void DoSomethingInteresting(Action<Type1, Type2> action)
{
//code logic
action(p1, p2);
}
}
}
然后像这样使用它 -
使用lambda
(new SharedUtilities.PartialClass()).DoSomethingInteresting((param1, param2)=>
{
//codes
});
没有Lambda
public void DoSomethingInterestingSpecific(Type1 param1, Type2 param2)
{
//code logic
}
(new SharedUtilities.PartialClass()).DoSomethingInteresting(DoSomethingInterestingSpecific);
这是实现此目的的一种方式,还有其他方法,如抽象工厂模式,事件委托回调等。
答案 1 :(得分:0)
函数功能&LT; ...&GT;具有返回值,Action&lt; ...&gt;才不是。回调通常应该是Action&lt; ...&gt;
如果要构造代码,以便在完成时可以通知调用函数的类以外的类,请定义一个事件。