【发布时间】:2019-06-05 11:48:52
【问题描述】:
我正在使用 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)': 没有找到合适的覆盖方法
【问题讨论】:
-
你想在这里实现什么?大多数应用会引入专门用于导航的服务,以这种方式连接到您的 DI,而不是破解 NavigationPage 的 Navigation 本身。
-
我不需要任何框架。在这种情况下,我需要使用 di 创建自己的导航系统,这可能吗
-
我不是在建议一个框架,我是在建议一个专门用于导航的服务,而不是直接调用 Navigation 对象本身。看看微软的Enterprise App Navigation,它应该能更好地描述我的建议。
标签: c# mvvm xamarin.forms autofac