Внедрение зависимостей с использованием UnityConfig с конструктором параметров - PullRequest
0 голосов
/ 15 марта 2019

Мы используем Unity.WebAPI для реализации внедрения зависимостей в Web API.

Я бы хотел передать Token в качестве параметра конструктора в класс реализации, а не в качестве свойства?

Также, пожалуйста, помогите мне улучшить приведенную ниже архитектуру.

UnityConfig

public static class UnityConfig
{
    public static void RegisterComponents()
    {
        var container = new UnityContainer();
        container.RegisterType<ICustomer, Customer>();         
        GlobalConfiguration.Configuration.DependencyResolver = new UnityDependencyResolver(container);
    }
}

BaseController

public class BaseController : ApiController
{
    protected string Token;
    public BaseController()
    {

        if (System.Web.HttpContext.Current.Request.Headers["Authorization"] != null)
        {
            Token = System.Web.HttpContext.Current.Request.Headers["Authorization"];
        }

    }
}

CustomerController

public class CustomerController : BaseController
{
    ICustomer CustomerRepository;
    public CustomerController(ICustomer customerRepository)
    {
        CustomerRepository = customerRepository;
        CustomerRepository.Token = base.Token;
    }

    [HttpGet]
    [Route(UrlConstants.GETCUSTOMERDETAILS)]
    public IHttpActionResult GetCustomerDetails(int customerId)
    {
        return Content(HttpStatusCode.OK, CustomerRepository.GetCustomerDetails(customerId));
    }
}

Интерфейс

public interface IBase
{
    string Token { get; set; }
}

public interface ICustomer : IBase
{
    CustomerDetails GetCustomerDetails(int customerId);
}

Реализация

public class Customer : ICustomer
{
    public string Token { get; set; }
    public CustomerDetails  GetCustomerDetails(int customerId)
    {
        // Use the Token here
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...