我正在使用autofac进行依赖项注入,并且我需要重写导航功能。为了做到这一点
Locator.cs(其中包含Cs文件)
private readonly ContainerBuilder _builder;
public locator()
{
_builder = new ContainerBuilder();
register();
Container = _builder.Build();
}
public IContainer Container { get; set; }
private void register()
{
_builder.RegisterType<vm>().As<Ivm>();
_builder.RegisterType<Vm1>();
_builder.RegisterType < basevm>();
_builder.RegisterType<MainPage>();
_builder.RegisterType<xa>();
}
在我的app.Xaml.cs
在构造函数中
public App()
{
InitializeComponent();
locator locator1 = new locator();
Container = locator1.Container;
MainPage = new NavigationPage(Container.Resolve<MainPage>());
}
public static IContainer Container;
然后,我试图覆盖其后面的主页代码中的导航功能。我所缺少的以及在何处使用
public abstract void Navigate(SelectedItemChangedEventArgs e);
public override async void Navigate(SelectedItemChangedEventArgs e)
{
xa patientListViewPage = App.Container.Resolve<xa>();
await Navigation.PushAsync(patientListViewPage);
}
为什么这不起作用。我发生此错误
'MainPage.Navigate(SelectedItemChangedEventArgs)':找不到合适的方法来覆盖
答案 0 :(得分:1)
您可以从NavigationPage参考中获取。
public class CustomNavigationPage : NavigationPage
{
//You can define your container here.
public CustomNavigationPage()
{
//You can resolve here
}
}
,你也可以看 here
答案 1 :(得分:1)
我可以想出一种更好的方法来使用Autofac,这样您就可以使用通用方法来解决问题。
prefix: '${id}/'
还可以通过参数进行修改
public static async Task NavigateAsync<TContentPage>(INavigation navigation ) where TContentPage : ContentPage
{
var contentPage = App.Container.Resolve<TContentPage>();
await navigation.PushAsync(contentPage, true);
}