【问题标题】:Shared Method with callback argument带有回调参数的共享方法
【发布时间】:2014-08-06 10:57:49
【问题描述】:

我想创建如下模式:

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

        partial void DoSomethingPlatformSpecific();
}

}

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

【问题讨论】:

  • 我确实考虑过抽象工厂模式,但我想充分探索替代方案,以便做出更有根据的决定。

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


【解决方案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);
    

这是一种方法,还有其他方法,比如抽象工厂模式、事件委托回调等。

【讨论】:

    【解决方案2】:

    Func<...> 有返回值,Action<...> 没有。回调通常应该是 Action<...>

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-02
      • 1970-01-01
      相关资源
      最近更新 更多