Я хочу реализовать Autofa c для моего Контроллера Закупок (). Как и другие мои контроллеры, я зарегистрировал зависимости в Global.asax. И работает как положено. Но для компонента CustomersController () исключение циклической зависимости компонента происходит для FiscalYearManager. Стоит отметить, что все работает нормально, если я не использую Autofa c для этого контроллера. Я поместил скриншот этой ошибки и загрузил необходимые коды, связанные с этим. Пожалуйста, просмотрите и помогите мне решить эту проблему.
Global.asax -> Application_Start ()
var builder = new ContainerBuilder();
// MVC - Register Controllers
builder.RegisterType<ProductsController>().InstancePerRequest();
builder.RegisterType<PurchasesController>().InstancePerRequest();
builder.RegisterType<SalesController>().InstancePerRequest();
// MVC - OPTIONAL: Register model binders that require DI.
builder.RegisterModelBinders(typeof(MvcApplication).Assembly);
builder.RegisterModelBinderProvider();
// MVC - OPTIONAL: Register web abstractions like HttpContextBase.
builder.RegisterModule<AutofacWebTypesModule>();
// MVC - OPTIONAL: Enable property injection in view pages.
builder.RegisterSource(new ViewRegistrationSource());
// MVC - OPTIONAL: Enable property injection into action filters.
builder.RegisterFilterProvider();
// Register application dependencies for PurchaseController
builder.RegisterType<PurchaseManager>().As<IPurchaseManager>();
builder.RegisterType<GeneralInventoryManager>().As<IGeneralInventoryManager>();
builder.RegisterType<ServiceCenterInventoryManager>().As<IServiceCenterInventoryManager>();
builder.RegisterType<PurchaseBatchPaymentManager>().As<IPurchaseBatchPaymentManager>();
builder.RegisterType<PartyManager>().As<IPartyManager>();
builder.RegisterType<PurchaseFileManager>().As<IPurchaseFileManager>();
builder.RegisterType<ProductCategoryManager>().As<IProductCategoryManager>();
builder.RegisterType<PosPurchaseFileManager>().As<IPosPurchaseFileManager>();
builder.RegisterType<PosPurchasePaymentManager>().As<IPosPurchasePaymentManager>();
builder.RegisterType<CategoryManager>().As<ICategoryManager>();
builder.RegisterType<ItemManager>().As<IItemManager>();
builder.RegisterType<PurchaseOrderManager>().As<IPurchaseOrderManager>();
builder.RegisterType<FiscalYearManager>().As<IFiscalYearManager>().SingleInstance()
.PropertiesAutowired(PropertyWiringOptions.AllowCircularDependencies);
PurchasesController ()
private readonly LoaderUtility _loaderUtility;
private readonly IPurchaseManager _iManager;
private readonly IGeneralInventoryManager _iGeneralInventoryManager;
private readonly IServiceCenterInventoryManager _iServiceCenterInventoryManager;
private readonly IPurchaseBatchPaymentManager _iPurchaseBatchPaymentManager;
private readonly IPartyManager _iPartyManager;
private readonly IPurchaseFileManager _iPurchaseFileManager;
private readonly IFiscalYearManager _iFiscalYearManager;
private readonly IProductCategoryManager _iProductCategoryManager;
private readonly IPosPurchaseFileManager _iPosPurchaseFileManager;
private readonly IPosPurchasePaymentManager _iPosPurchasePaymentManager;
private readonly ICategoryManager _iCategoryManager;
private readonly IItemManager _iItemManager;
private readonly IPurchaseOrderManager _iPurchaseOrderManager;
public PurchasesController(IItemManager itemManager,
LoaderUtility loaderUtility,
IPurchaseManager purchaseManager,
IGeneralInventoryManager iGeneralInventoryManager,
IServiceCenterInventoryManager iServiceCenterInventoryManager,
IPurchaseBatchPaymentManager iPurchaseBatchPaymentManager,
IPartyManager iPartyManager,
IFiscalYearManager iFiscalYearManager,
IProductCategoryManager iProductCategoryManager,
IPosPurchaseFileManager iPosPurchaseFileManager,
IPosPurchasePaymentManager iPosPurchasePaymentManager,
ICategoryManager iCategoryManager,
IPurchaseOrderManager purchaseOrderManager
)
{
_loaderUtility = loaderUtility;
_iManager = purchaseManager;
_iGeneralInventoryManager = iGeneralInventoryManager;
_iPurchaseBatchPaymentManager = iPurchaseBatchPaymentManager;
_iPartyManager = iPartyManager;
_iFiscalYearManager = iFiscalYearManager;
_iItemManager = itemManager;
_iProductCategoryManager = iProductCategoryManager;
_iPosPurchaseFileManager = iPosPurchaseFileManager;
_iPosPurchasePaymentManager = iPosPurchasePaymentManager;
_iCategoryManager = iCategoryManager;
_iPurchaseOrderManager = purchaseOrderManager;
_iServiceCenterInventoryManager = iServiceCenterInventoryManager;
}
PurchaseManager ()
private readonly IPurchaseRepository _iRepository;
private readonly IVatConfManager _iVatConfManager;
private readonly ITaxConfManager _iTaxConfManager;
private readonly IInventoryAccountConfRepository _inventoryAccountConfRepository;
private readonly IPosPurchasePaymentManager _iPosPurchasePaymentManager;
private readonly IPurchaseDetailsManager _iPurchaseDetailsManager;
private readonly IGeneralInventoryManager _iInventoryManager;
private readonly IServiceCenterInventoryManager _iServiceCenterInventoryManager;
private readonly IVoucherManager _iVoucherManager;
private readonly IJournalCategoryManager _iJournalCategoryManager;
private readonly ICategoryRepository _iCategoryRepository;
private readonly IFiscalYearManager _iFiscalYearManager;
private readonly PosVoucherGenerateManager _voucherGenerateManager;
public PurchaseManager()
{
_iRepository = new PurchaseRepository();
_iVatConfManager = new VatConfigurationManager();
_iTaxConfManager = new TaxConfigurationManager();
_inventoryAccountConfRepository = new InventoryAccountConfRepository();
_iFiscalYearManager = new FiscalYearManager();
_iCategoryRepository = new CategoryRepository();
_iJournalCategoryManager = new JournalCategoryManager();
_iPosPurchasePaymentManager = new PosPurchasePaymentManager();
_iInventoryManager = new GeneralInventoryManager();
_iServiceCenterInventoryManager = new ServiceCenterInventoryManager();
_iPurchaseDetailsManager = new PurchaseDetailsManager();
_iVoucherManager = new VoucherManager();
_voucherGenerateManager = new PosVoucherGenerateManager();
}
public PurchaseManager(IPurchaseRepository iReporitory,
IGeneralInventoryManager inventoryManager,
IServiceCenterInventoryManager serviceCentreInventoryManager,
IPurchaseDetailsManager iPurchaseDetailsManager,
IPosPurchasePaymentManager iPosPurchasePaymentManager,
IJournalCategoryManager iJournalCategoryManager,
ICategoryRepository iCategoryRepository,
IVatConfManager iVatConfManager,
ITaxConfManager iTaxConfManager,
IFiscalYearManager iFiscalYearManager,
IPurchaseBatchPaymentManager iBatchPaymentManager)
{
this._iRepository = iReporitory;
_iVatConfManager = iVatConfManager;
_iTaxConfManager = iTaxConfManager;
this._iInventoryManager = inventoryManager;
this._iServiceCenterInventoryManager = serviceCentreInventoryManager;
_iPurchaseDetailsManager = iPurchaseDetailsManager;
_iPosPurchasePaymentManager = iPosPurchasePaymentManager;
_iJournalCategoryManager = iJournalCategoryManager;
_iCategoryRepository = iCategoryRepository;
_iFiscalYearManager = iFiscalYearManager;
}
IFiscalYearManager ()
public interface IFiscalYearManager : IManager<FiscalYear>
{
ICollection<FiscalYear> Search(FiscalYearSearchVm model);
bool CheckFiscalYear(FiscalYear entity);
FiscalYear GetCurrentFiscalYear();
bool IsDateInFiscalYear(DateTime? date);
}