簡體   English   中英

c#autofac解決問題

[英]c# autofac resolve issue

我是Autofac的新手,不確定如何在構建器中傳遞對象。

public class OrderFactory : IOrderFactory {
    private readonly IAffiliate _affiliate;
    private readonly IGetNewOrdersToImport _ordersToImportHelper;
    private readonly IOrderProcessor _orderProcessor;

    public OrderFactory(IAffiliate affiliate, IGetNewOrdersToImport ordersToImport, IOrderProcessor orderProcessor) {
        _affiliate =  affiliate;
        _ordersToImportHelper = ordersToImport;
        _orderProcessor = orderProcessor;
    }
}

引導程序

    public IContainer Configure()
    {
        var builder = new ContainerBuilder();

        builder.RegisterType<Channel>().As<IAffiliate>();
        builder.RegisterType<OrderFactory>().As<IOrderFactory>();

        return builder.Build();
    }

應用運行時,我先加載會員,並希望在OrderFactory中傳遞會員

程序

var channel = new Channel().Get(param);
var merchantOrderManager = _myContainer.Resolve<IOrderFactory>();
merchantOrderManager.ImportMerchantOrders();

所以通道對象現在填充有許多屬性,我想在OrderFactory中訪問Channel對象,但我得到的會員為null。

請指教

好吧,我創建了存儲庫並從那里獲取頻道...

public IContainer Configure(IAffiliate affiliate)
    {
        var builder = new ContainerBuilder();

        builder.Register(c => new ChannelRepository().Get(affiliate.Code)).As<IAffiliate>();
        builder.RegisterType<DbContext>().As<IDbContext>().InstancePerLifetimeScope();

        builder.RegisterType<OrderFactory>().As<IOrderFactory>();

        return builder.Build();
    }

所以這意味着每當返回OrderFactory時,我都會從ChannelRepository獲取通道...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM