Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Xamarin表单中未找到UnityServiceLocator命名空间(Unity依赖项注入和IoC容器)_C#_Unity3d_Xamarin_Xamarin.forms_Unity Container - Fatal编程技术网

C# 在Xamarin表单中未找到UnityServiceLocator命名空间(Unity依赖项注入和IoC容器)

C# 在Xamarin表单中未找到UnityServiceLocator命名空间(Unity依赖项注入和IoC容器),c#,unity3d,xamarin,xamarin.forms,unity-container,C#,Unity3d,Xamarin,Xamarin.forms,Unity Container,我在实现Unity容器(Unity Dependency Injection&IoC容器)时遇到了一个问题,因为在Xamarin表单中找不到“UnityServiceLocator”的名称空间 我在var unityServiceLocator=new unityServiceLocator(容器)处得到错误 错误CS0246:找不到类型或命名空间名称“UnityServiceLocator”(是否缺少using指令或程序集引用? 我正在使用Visual Studio 2019使用.Net Fr

我在实现Unity容器(Unity Dependency Injection&IoC容器)时遇到了一个问题,因为在Xamarin表单中找不到“UnityServiceLocator”的名称空间

我在var unityServiceLocator=new unityServiceLocator(容器)处得到错误

错误CS0246:找不到类型或命名空间名称“UnityServiceLocator”(是否缺少using指令或程序集引用?

我正在使用Visual Studio 2019使用.Net Framework 2.1

Nu get软件包安装为:

统一(5.11.7)

CommonServiceLocator(2.0.5)

Xamarin.基本要素(1.3.1)

Xamarin.表格(4.7.0.1.1080)

使用系统;
使用TestXamarinMVVM.Services;
使用TestXamarinMVVM.View;
统一使用;
使用CommonServiceLocator;
使用Xamarin.Forms;
使用Xamarin.Forms.Xaml;
命名空间TestXamarinMVVM
{
公共部分类应用程序:应用程序
{
公共静态UnityContainer容器{get;private set;}
公共应用程序()
{
初始化组件();
容器=新的UnityContainer();
Container.RegisterType();
**var unityServiceLocator=新的unityServiceLocator(容器)**
ServiceLocator.SetLocatorProvider(()=>unityServiceLocator);
//MainPage=newpersondispaly();
MainPage=新产品页();
}
受保护的覆盖void OnStart()
{
}
受保护的覆盖void OnSleep()
{
}
受保护的覆盖void OnResume()
{
}
}
}

我不知道我在哪里犯了错误!请帮帮我。

最新的方法是。您会注意到您确实犯了一些错误:

    public App()
    {
        InitializeComponent();

        //Init UnityContainer
        UnityContainer unityContainer = new UnityContainer();
        unityContainer.RegisterType<IProductsService, ProductsService>();

        var unityServiceLocator = new UnityServiceLocator(unityContainer);
        ServiceLocator.SetLocatorProvider(() => unityServiceLocator);

        MainPage = new ProductsPage();
    }

您需要为unity添加以下包

  • 统一
  • 公共服务提供者
  • Unity.ServiceLocation

  • 这些东西可能会继续得到支持吗?看起来它的支持率很不稳定。它过去是由微软发布的一个软件包,现在是一个开源软件包,需要单独安装才能工作?看起来有点古怪。
        public App()
        {
            InitializeComponent();
    
            //Init UnityContainer
            UnityContainer unityContainer = new UnityContainer();
            unityContainer.RegisterType<IProductsService, ProductsService>();
    
            var unityServiceLocator = new UnityServiceLocator(unityContainer);
            ServiceLocator.SetLocatorProvider(() => unityServiceLocator);
    
            MainPage = new ProductsPage();
        }
    
    using Unity.ServiceLocation;
    using UnityIoCContainer.Interfaces;
    using UnityIoCContainer.Services;
    using UnityIoCContainer.Views;