В Xamarin Forms пространство имен UnityServiceLocator не найдено (контейнеры Unity Dependency Injection и Io C) - PullRequest
0 голосов
/ 09 июля 2020

Я столкнулся с проблемой при реализации контейнера Unity (Injection Dependency Injection и контейнеров Io C) из-за невозможности найти пространство имен для «UnityServiceLocator» в форме Xamarin.

Я получаю сообщение об ошибке at var unityServiceLocator = new UnityServiceLocator (Container);

ошибка CS0246: не удалось найти тип или имя пространства имен UnityServiceLocator (отсутствует ли у вас директива using или сборка ссылка?)

Я использую. Net Framework 2.1 с помощью Visual Studio 2019.

Пакет Nu-get Установить как:

Unity (5.11. 7)

CommonServiceLocator (2.0.5)

Xamarin.Essentials (1.3.1)

Xamarin.Forms (4.7.0.1.1080)

using System; 
using TestXamarinMVVM.Services;
using TestXamarinMVVM.View;
using Unity;
using CommonServiceLocator;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;

namespace TestXamarinMVVM
{
    public partial class App : Application
    {
        public static UnityContainer Container { get; private set; }

        public App()
        {
            InitializeComponent();

            Container = new UnityContainer();
            Container.RegisterType<IProductService, ProductService>();

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


            //MainPage = new PersonDispaly();
            MainPage = new ProductPage();
        }

        protected override void OnStart()
        {
        }

        protected override void OnSleep()
        {
        }

        protected override void OnResume()
        {
        }
    }
}

Не знаю, где делаю ошибку! Пожалуйста, помогите мне.

1 Ответ

0 голосов
/ 05 августа 2020

Самый последний способ сделать это - , показанный в этом примере ниже . Вы заметите, что сделали несколько ошибок:

    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, что означает, что вам, вероятно, потребуется добавить больше пакетов nuget:

using Unity.ServiceLocation;
using UnityIoCContainer.Interfaces;
using UnityIoCContainer.Services;
using UnityIoCContainer.Views;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...