我有一個安裝了 Catel.Core、Catel.MVVM、Catel.Analyzers 和 Catel.Fody 的 WPF 應用程式。
當我啟動應用程式并嘗試決議資料訪問存盤庫 ( ILigaMannschaftenZuordnungenRepository) 時,拋出例外 Catel.IoC.TypeNotRegisteredException。當我呼叫 它時dependencyResolver.CanResolve<ILigaMannschaftenZuordnungenRepository>();,它回傳 true。
我做了一個擴展方法來在一個地方注冊每個服務和存盤庫。
public static IServiceLocator RegisterDataAccessRepositories(this IServiceLocator services, string dbCon)
{
services.RegisterInstance(new SpielbetriebDbContext(dbCon));
services.RegisterType<IDuelleRepository, DuelleRepository>();
services.RegisterType<IDuellErgebnisseRepository, DuellErgebnisseRepository>();
services.RegisterType<ILigaMannschaftenZuordnungenRepository, LigaMannschaftenZuordnungenRepository>(); // It is registered!
services.RegisterType<IMitgliederRepository, MitgliederRepository>();
services.RegisterType<IPartieDetailsRepository, PartieDetailsRepository>();
services.RegisterType<IPartienRepository, PartienRepository>();
services.RegisterType<IProtokollierungenRepository, ProtokollierungenRepository>();
services.RegisterType<ISaetzeRepository, SaetzeRepository>();
services
.RegisterType<ISpielerPartieErgebnisZuordnungenRepository,
SpielerPartieErgebnisZuordnungenRepository>();
services.RegisterType<ISpielerRepository, SpielerRepository>();
services.RegisterType<IVereineRepository, VereineRepository>();
return services;
}
當我除錯應用程式并檢查 ServiceLocator 的注冊型別時,它甚至會顯示已注冊的型別ILigaMannschaftenZuordnungenRepository(欄位_registeredTypes):

在 OnStartup 中呼叫擴展。我什至在 App 類的建構式中嘗試過。
var serviceLocator = this.GetServiceLocator();
serviceLocator.RegisterDataAccessRepositories(DataConfig.CurrentDbCon); // <--
serviceLocator.RegisterApplicationServices();
我嘗試使用 Resolve Method 立即呼叫它
var dep = this.GetDependencyResolver();
dep.Resolve<ILigaMannschaftenZuordnungenRepository>();
dep.CanResolve<ILigaMannschaftenZuordnungenRepository>(); // returns true
我做錯了什么?
例外訊息

uj5u.com熱心網友回復:
好的,在除錯了一段時間并檢查了多項內容之后,我再次查看了我的資料訪問存盤庫。我意識到我的存盤庫的實作有一個internal建構式而不是公共建構式。原因是基礎存盤庫,它有一個內部建構式。從更改internal為publicDI 容器后,正確決議了型別。
如果您遇到此問題,請檢查您的型別是否具有公共建構式。
壞的:
internal LigaMannschaftenZuordnungenRepository(SpielbetriebDbContext context) : base(context)
{
}
好的:
public LigaMannschaftenZuordnungenRepository(SpielbetriebDbContext context) : base(context)
{
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/426005.html
上一篇:WPF將視窗標題系結到復選框狀態
