代码之家  ›  专栏  ›  技术社区  ›  Dominique

如何将典型的C#一行代码作为单独的代码段编写?

  •  1
  • Dominique  · 技术社区  · 2 年前

    我将接管一个基于Prism的C#应用程序,该应用程序包含相当多的lambda式一行代码,如下所示:

    using Prism.Interactivity.InteractionRequest;
    ...
    public InteractionRequest<Confirmation> OwnObjectRequest { get; } = new InteractionRequest<Confirmation>();
    ...
    OwnObjectRequest.Raise(confirmation, c => // one-liner
    {
        Confirmation conf = (Confirmation)c;
        if (conf.Confirmed)
        {
            DoSomething();
        }
    });
    

    我想用一种更干净的方式编程,我的意思是我只想在一行上放一个动作,但我没有完成( some_Method ,如何使用它来定义动作,…?)
    这就是我现在所拥有的:

    public ... some_Method(...)
    {
        Confirmation conf = (Confirmation)c;
        if (conf.Confirmed)
        {
            DoSomething();
        }
    }
    
    Action actionToPerform = new Action(some_Method);
    OwnObjectRequest.Raise(confirmation, actionToPerform);
    

    有人知道怎么写吗?

    我不认为用多行格式编写这样的一行代码有任何技术优势,但它将极大地帮助我理解如何阅读、理解并支持这些源代码。

    1 回复  |  直到 2 年前
        1
  •  2
  •   Freeman    2 年前

    我不确定我是否理解正确,但您可以定义一个单独的方法或直接使用lambda表达式

    例如,如果您想要单独的mtehod:

    public void HandleConfirmation(Confirmation confirmation)
    {
        if (confirmation.Confirmed)
        {
            DoSomething();
        }
    }
    

    然后,您可以使用此方法作为要引发的操作:

    OwnObjectRequest.Raise(confirmation, HandleConfirmation);
    

    或使用lambda表达式

    OwnObjectRequest.Raise(confirmation, c =>
    {
        Confirmation conf = (Confirmation)c;
        if (conf.Confirmed)
        {
            DoSomething();
        }
    });