gpt4 book ai didi

c# - 可以将两个重载方法变成单个方法

转载 作者:行者123 更新时间:2023-12-02 17:24:54 25 4
gpt4 key购买 nike

  public void Navigate<TContentPage, TNavigationParameter>(INavigation 
navigation,
TNavigationParameter navParam,
Action<TContentPage, TNavigationParameter> action = null) where TContentPage : ContentPage
{
var contentPage = App.Container.Resolve<TContentPage>();
action?.Invoke(contentPage, navParam);
navigation.PushAsync(contentPage, true);
}

public void Navigate<TContentPage, TNavigationParameter,TSelected>(INavigation navigation,
TNavigationParameter navParam,TSelected nav,
Action<TContentPage, TNavigationParameter> action = null,Action<TContentPage,TSelected>action1=null
) where TContentPage : ContentPage
{
var contentPage = App.Container.Resolve<TContentPage>();
action?.Invoke(contentPage, navParam);
action1?.Invoke(contentPage,nav);

navigation.PushAsync(contentPage, true);
}

这是我用来导航的两个重载方法,我可以使用其中之一吗?我可以在没有两个操作函数的情况下修改这个方法吗?我可以修改第二个方法以便在这两种情况下使用

最佳答案

除非您想对 TNavigationParameter 使用具体类型或接口(interface),或者至少使用 TSelected,否则无需组合这两种方法,因为有一个额外的 Generic type parameter在第二种变体中,无论如何都需要填写该参数。无论如何,您都必须创建一个重载(以将其删除)。

在我看来,保留你所拥有的。

是的,您可以将它们粉碎到一个方法中,但是使用您拥有的泛型类型参数,您将需要传入一个幻像的泛型类型参数,在我看来,这很令人困惑并且有味道。


此外,actionaction1 的命名不太理想。

关于c# - 可以将两个重载方法变成单个方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55719628/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com