【发布时间】:2019-01-19 17:30:46
【问题描述】:
我想在我的 Xamarin 项目中利用依赖注入,但无法让构造函数注入在 XAML 视图后面的 C# 类中工作。有什么办法吗? 我已经看到了如何在视图模型中设置依赖注入的指南,以便以后将它们用作存储库,但这对我不起作用。
到目前为止,我尝试了 Ninject 和 Unity。
代码: 这是我想在我的 PCL 项目中使用的服务:
public class MyService : IMyService
{
public void Add(string myNote)
{
//Add Note logic
}
}
界面:
public interface IMyService
{
void Add(string myNote);
}
App.Xaml 中的 Unity 设置:
public App ()
{
InitializeComponent();
var unityContainer = new UnityContainer();
unityContainer.RegisterType<IMyService, MyService>();
var unityServiceLocator = new UnityServiceLocator(unityContainer);
ServiceLocator.SetLocatorProvider(() => unityServiceLocator);
MainPage = new MainMasterMenu(); //<-- feel that I'm missing something here as I shouldn't be creating class instances with DI, right ?
}
我希望看到的用法。这是 XAML 起始页后面的 .CS 文件:
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class MainMasterMenu : MasterDetailPage
{
private IMyService _myService;
public MainMasterMenu(IMyService myService)
{
_myService = myService
}
private void SomeFormControlClickEvent(object sender, ItemChangedEventArgs e)
{
_myService.Add("hi");
}
}
【问题讨论】:
标签: c# xamarin dependency-injection xamarin.forms mobile-development