Unity Framework в ядре .net - PullRequest
       41

Unity Framework в ядре .net

0 голосов
/ 30 ноября 2018

Я новичок в .net core.Нужна помощь в создании единства.Вот что я попробовал.

Я добавил ссылку на System.Configuration.ConfigurationManager .net стандарт V2.0

Затем создал app.config

    <?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <!--In older version, Microsoft.Practices.Unity.Configuration.dll is part of older version (around 3.5.1404). In newer version,
    Microsoft.Practices.Unity.Configuration.UnityConfigurationSection class is moved to Unity.Configuration.dll.-->
    <!--<section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration"/>-->
    <section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Unity.Configuration"/>
  </configSections>
  <unity xmlns="http://schemas.microsoft.com/practices/2010/unity">
    <!--Old syntax-->
    <!--<typeAliases>
      <typeAlias alias="IDBAccess" type="Interfaces.IDataProvider, Interfaces" />
      <typeAlias alias="SQLDataAccess" type="SQLDataProvider.DataProvider, SQLDataProvider" />
    </typeAliases>-->
    <!--New syntax supported in newer versions. So if above syntax does not work then try below one-->
    <alias alias="IDBAccess" type="Interfaces.IDataProvider, Interfaces" />
    <alias alias="SQLDataAccess" type="SQLDataProvider.DataProvider, SQLDataProvider" />
    <alias alias="OracleDataAccess" type="OracleDataProvider.DataProvider, OracleDataProvider" />
    <containers>
      <container name="DataAccessProvider">
        <register type="IDBAccess" mapTo="SQLDataAccess"/>
        <register type="IDBAccess" mapTo="SQLDataAccess" name="SQLDataAccess" />
        <register type="IDBAccess" mapTo="OracleDataAccess" name="OracleDataAccess" />
      </container>
    </containers>
  </unity>
</configuration>

В классе iпопробуйте прочитать конфигурацию, но получите NULL.

UnityConfigurationSection section =


(UnityConfigurationSection)ConfigurationManager.GetSection("unity");

Ответы [ 3 ]

0 голосов
/ 07 декабря 2018

Если вы имеете в виду Unity DI Container Framework, вам не нужно его настраивать, потому что ядро ​​dotnet поставляется со своим собственным IoC DI-контейнером.Также ядро ​​dotnet использует файлы конфигурации appSettings.json.В Startup.cs должен быть такой метод:

public void ConfigureServices(IServiceCollection services) 
{

}

И вы можете настроить свои зависимости, используя объект services, например:

services.AddSingleton<IContract, Contract>();

Существуют и другие варианты того, как вы можетенастройте ваши зависимости, я только что представил Singleton, но вы можете перейти отсюда.

Самый простой способ проверить это - запустить новый проект:

dotnet new mvc -n testProj

и проверитьфайл Startup.cs, добавьте к нему интерфейс, реализацию, затем зарегистрируйте его в экземпляре IServiceCollection.

0 голосов
/ 21 декабря 2018

Вот как я наконец реализовал.В классе запуска я настроил зависимости

 public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
        services.AddScoped<IRepositoryFactory, RepositoryFactory>();
        services.AddScoped<IMapperFactory, MapperFactory>();
        services.AddScoped<ITestService, testtService>();


       // services.AddScoped<IMapperFactory, MapperFactory>();
    }

Вот код для его разрешения.using DependencyFactory.Resolve ();

public DependencyFactory(IServiceCollection services)
    {
        _container=services;
    }
 public static T Resolve<T>()
    {
        T ret = default(T);
        var provider = _container.BuildServiceProvider();

        if (provider.GetService<T>() !=null)
        {
            ret = (T)provider.GetService<T>();
        }

        return ret;
    }
0 голосов
/ 04 декабря 2018

в app.config вы можете попробовать это

<section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection"/>

вместо этой строки

<section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Unity.Configuration"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...