IoC设置和继承类的问题

时间:2013-05-10 18:21:40

标签: c# design-patterns dependency-injection inversion-of-control

我对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;
    }

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

非常感谢,

汤姆

1 个答案:

答案 0 :(得分:1)

也许该框架只执行具有特定参数的构造函数。
您可以在IBookingService上设置Freedom2BookTree属性,并将其分配到构造函数之外。