Список зарегистрированных маршрутов - PullRequest
2 голосов
/ 26 января 2020

Я занимаюсь разработкой приложения Xamarin и хотел бы использовать Xamarin.Forms.Shell для навигации (маршрутизации) в моем приложении. Знаете ли вы, случайно, каким образом можно получить список зарегистрированных маршрутов в командной консоли?

Например, рассмотрим следующее SimpleAppShell

public partial class SimpleAppShell : Xamarin.Forms.Shell
{
    public SimpleAppShell()
    {
        InitializeComponent();
        RegisterExtraRouting();
        BindingContext = this;
    }

    protected void RegisterExtraRouting()
    {
        Routing.RegisterRoute("//tab-bar-item/tab-2/page-2", typeof(ContentPage2));
        Routing.RegisterRoute("//tab-bar-item/tab-3/page-3", typeof(ContentPage3));
    }

    public override OnAppearing()
    {
        base.OnAppearing();
        PrintMyRoutes(); // TODO: don't know where to get the info from
    }

}

и следующее XAML-файл, связанный с Shell выше

<!--- removed config code for simplicity -->

<TabBar
    Route="tab-bar-item">

    <Tab
        Title="Tab-1"
        Route="tab-1"
        Icon="tabs_icon.png">

        <ShellContent
            Route="page-1"
            ContentTemplate="{DataTemplate local:ContentPage1}" />

    </Tab>

</TabBar>

Я хотел бы получить что-то вроде следующего в консоли, когда OnAppearing () называется:

//tab-bar-item/tab-1/page-1
//tab-bar-item/tab-2/page-2
//tab-bar-item/tab-3/page-3

После поиска этого topi c в Google, я пока не смог найти ничего.

Спасибо за вашу поддержку.

1 Ответ

1 голос
/ 26 января 2020

Метод , представляющий ключи маршрута , равен internal, вам потребуется использовать отражение для вызова этого метода.

public SimpleAppShell()
{
    InitializeComponent();
    RegisterExtraRouting();
    BindingContext = this;

    MethodInfo getRouteKeysMethodInfo = typeof(Routing).GetMethod("GetRouteKeys", BindingFlags.NonPublic | BindingFlags.Static);
    string[] routeKeys = (string[])getRouteKeysMethodInfo.Invoke(null, null);
}
...