带回调参数的共享方法

时间:2014-08-06 01:14:30

标签: c# windows-phone-8 windows-8.1 win-universal-app

我想创建一个如下图案:

namespace SharedUtilities
{
    public partial class PartialClass
    {
        public void DoSomethingInteresting()
        {
            DoSomethingPlatformSpecific();
        }

        partial void DoSomethingPlatformSpecific();
}

}

但我想添加一个回调参数,以便我可以根据平台传入不同的回调。任何人都能指出我在正确的方向吗?我一直在阅读Action,EventHandler<>和委托,但我不确定在这种情况下使用哪一个。任何建议将不胜感激。

2 个答案:

答案 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;

如果要构造代码,以便在完成时可以通知调用函数的类以外的类,请定义一个事件。