0

我对 IoC 模式相当陌生,并且在以下设置方式上遇到了问题。

我有一个 Service 类,它具有以下构造函数:

public BookingService(IBookingRepository bookingRepository, IUnitRepository   unitRepository, IRateRepository rateRepository, IDiscountRepository discountRepository, IUnitOfWork unitOfWork)
    {
        this.bookingRepository = bookingRepository;
        this.unitRepository = unitRepository;
        this.rateRepository = rateRepository;
        this.discountRepository = discountRepository;
        this.unitOfWork = unitOfWork;
    }

现在我可以像这样使用我的控制器了:

private IBookingService _bookingService;

    public AdminBookingSurfaceController(IBookingService bookingService)
    {
        _bookingService = bookingService;
    }

我遇到困难的地方是在第三方框架(Umbraco)的继承类中使用 BookingService 时。

这是当前的构造函数:

public class Freedom2BookTree : umbraco.cms.presentation.Trees.BaseTree
{
    public Freedom2BookTree(string application)
        : base(application)
    {
    }

我不确定 IoC 将如何使用它,我尝试过这样但它不起作用:

如,当我添加附加参数时,构造函数永远不会被命中/调用

public class Freedom2BookTree : umbraco.cms.presentation.Trees.BaseTree
{
    private IBookingService _bookingService;
    public Freedom2BookTree(string application, IBookingService bookingService)
        : base(application)
    {
        _bookingService = bookingService;
    }

如果有人可以就如何做到这一点提供一些建议,或者如果我以错误的方式看待它,那就太好了:)

非常感谢,

汤姆

4

1 回答 1

1

也许该框架仅执行具有特定参数的构造函数。
您可以在IBookingServicea 上创建属性Freedom2BookTree并将其分配到构造函数之外。

于 2013-05-10T20:40:38.633 回答