簡體   English   中英

MvxException:無法解析類型... IRepository

[英]MvxException: Failed to resolve type…IRepository

在我們的MvxApplication ,我使用EndingWith方法注冊我們的存儲庫。

我在一個不同的項目中使用了這種方法,我們的App.cs和我們的存儲庫位於同一個項目中,一切正常。 現在我已將App.cs移動到一個單獨的項目中,MvvmCross IOC不會從我們的核心應用程序注冊依賴項。

初始化方法

public override void Initialize() {

    // stuff happens here

    // Register all repositories
    CreatableTypes().EndingWith("Repository").AsInterfaces().RegisterAsLazySingleton();

    // more stuff happens here

    // Resolve the DbVersionRepo to run migrations.
    // This line is breaking
    var databaseVersionRepository = MvxSimpleIoCContainer.Instance.Resolve < IDatabaseVersionRepository > ();

}

有問題的存儲庫

public class DatabaseVersionRepository : RepositoryBase, IDatabaseVersionRepository
{ 
    // do stuff
}

例外

Cirrious.CrossCore.Exceptions.MvxException: Failed to resolve type OurApp.AppCore.Repositories.IDatabaseVersionRepository
12-10 10:35:43.275 E/mono    (24043): 
12-10 10:35:43.275 E/mono    (24043): Unhandled Exception:
12-10 10:35:43.275 E/mono    (24043): Cirrious.CrossCore.Exceptions.MvxException: Failed to resolve type OurApp.AppCore.Repositories.IDatabaseVersionRepository
12-10 10:35:43.275 E/mono    (24043):   at Cirrious.CrossCore.IoC.MvxSimpleIoCContainer.Resolve (System.Type t) [0x00000] in <filename unknown>:0 
12-10 10:35:43.275 E/mono    (24043):   at Cirrious.CrossCore.IoC.MvxSimpleIoCContainer.Resolve[IDatabaseVersionRepository] () [0x00000] in <filename unknown>:0 
12-10 10:35:43.275 E/mono    (24043):   at OurApp.CustomApp.Core.App.Initialize () [0x00135] in c:\Projects\OurApp\OurApp.Droid\App.cs:63 
12-10 10:35:43.275 E/mono    (24043):   at Cirrious.MvvmCross.Platform.MvxSetup.CreateAndInitializeApp (IMvxPluginManager pluginManager) [0x00000] in <filename unknown>:0 
12-10 10:35:43.275 E/mono    (24043):   at Cirrious.MvvmCross.Platform.MvxSetup.InitializeApp (IMvxPluginManager pluginManager) [0x00000] in <filename unknown>:0 
12-10 10:35:43.275 E/mono    (24043):   at Cirrious.MvvmCross.Platform.MvxSetup.InitializeSecondary () [0x00000] in <filename unknown>:0 
12-10 10:35:43.275 E/mono    (24043):   at Cirrious.MvvmCross.Droid.Platform.MvxAndroidSetupSingleton.<InitializeFromSplashScreen>b__5 (System.Object ignored) [0x00000] in <filename unknown>:0 
The program 'Mono' has exited with code 0 (0x0).

項目結構是這樣的。

OurCompany.AppCore
    \ Repositories
        \IDatabaseVersionRepository.cs
        \DatabaseVersionRepository.cs

OurCompany.CustomApp.Core
    \ App.cs

OurCompany.CustomApp.Droid.Ui
    \ Setup.cs

我還應該注意到我嘗試了這種方法但得到了相同的結果。

CreatableTypes().Inherits<IDatabaseVersionRepository>().AsInterfaces().RegisterAsLazySingleton();

根據Stuart上面的評論,解決當前程序集之外的依賴關系的方法是執行以下操作。

typeof(RepositoryBase).Assembly
                      .CreatableTypes()
                      .EndingWith("Repository")
                      .AsInterfaces()
                      .RegisterAsLazySingleton();

暫無
暫無

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

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