Получить текущий домен из конфигурации Unity - PullRequest
0 голосов
/ 09 июля 2019

У меня есть служба, которая выполняет вызовы API для внешнего приложения с использованием исполняющего домена.Поэтому, если я нахожусь в тестовом режиме, я звоню «http://localhost"», и если я нахожусь в производственном режиме, я бы хотел, чтобы он вызывал другой адрес. Пока у меня есть

    public interface IMyService{
       void DoStuff();
    }

    private string _url;
    public class MyService : IMyService
    {

    public MyService(string ExecutingDomainAddress)
    {
       _url = ExecutingDomainAddress;
    }

    public void DoStuff()
    {
      var destination = _url + "/GetCustomers";
    }

    }

В моей конфигурации Unity IЯ определил мои Сервис и Контракт как

container.RegisterType<IMyService, MyService>();

Я хотел бы добавить текущий URL / адрес в конструктор Сервиса. Можно ли это сделать здесь? Так, например:

var theCurrenDomain = "http://localhost/MySite"; //I want this to be dynamically generated e.g. Request.Url.Authority
container.RegisterInstance<string>("ExecutingDomainAddress", theCurrenDomain, new PerThreadLifetimeManager());

container.RegisterType<IMyService, MyService>(new InjectionConstructor(new ResolvedParameter<string>("ExecutingDomainAddress")));

Как мне получить URL-адрес отсюда и применить его к переменной "theCurrentDomain"?

1 Ответ

1 голос
/ 09 июля 2019

Я стремлюсь создать класс для представления этих настроек, а затем зарегистрировать этот класс как тип.Тогда любые классы, которые зависят от этих настроек, могут запросить объект этого типа через внедрение конструктора.

container.RegisterType<FileSystemPricerStagingDirectorySettings>(new InjectionConstructor(ConfigurationManager.AppSettings["PricerStagingDirectory"]));

container.RegisterType<IPricerStagingRepository, FileSystemPricerStagingRepository>();

public FileSystemPricerStagingRepository(FileSystemPricerStagingDirectorySettings pricerStagingDirectorySettings)
{
    // now I can get what I need from pricerStagingDirectorySettings
}
...