私はこのような2つのクラスを持っています:
1)
public class EFInitializerLanguage : EFInitializerBase, IRepositoryInitializer<Language>
{
public IEntityRepository<Language> Create()
{
return this.Model.CreateObjectContext<LanguageData>(new SqlConnection(Utility.ConnectionStrings.ConnDefault));
}
}
2)
public class EFInitializerPerson : EFInitializerBase, IRepositoryInitializer<Person>
{
public IEntityRepository<Person> Create()
{
return this.Model.CreateObjectContext<PersonData>(new SqlConnection(Utility.ConnectionStrings.ConnDefault));
}
}
そして、Unity.config の定義は (おそらくこれらは間違っていて、何をすべきかわかりませんでした)
<unity>
<typeAliases>
<typeAlias alias="IRepositoryInitializer`1" type="Contracts.Repositories.IRepositoryInitializer`1, Contracts" />
<typeAlias alias="EFInitializerPerson" type="Data.Initializers.EFInitializerPerson, Data" />
<typeAlias alias="IRepositoryInitializerLanguage`1" type="Contracts.Repositories.IRepositoryInitializer`1, Contracts" />
<typeAlias alias="EFInitializerLanguage" type="Data.Initializers.EFInitializerLanguage, Data" />
<containers>
<container>
<types>
<type type="IRepositoryInitializer`1" mapTo="EFInitializerPerson" />
<type type="IRepositoryInitializerLanguage`1" mapTo="EFInitializerLanguage" />
</types>
</container>
</containers>
</unity>
2つ以上ではなく1つのEFInitializerを使用することを考えるかもしれませんが、入力と出力のタイプが異なるため、作成できませんでした。この時点で、私の現在のアプローチは私には問題ないように思えます。
実行時に発生するエラーは次のとおりです。
依存関係の解決に失敗しました。タイプ = "Contracts.DataManagers.ILanguageManager"、名前 = ""。例外メッセージ: 現在のビルド操作 (ビルド キー Build Key[Contracts.DataManagers.ILanguageManager, null]) が失敗しました: 現在の型、Contracts.DataManagers.ILanguageManager はインターフェイスであり、構築できません。タイプマッピングがありませんか? (戦略タイプ BuildPlanStrategy、インデックス 3)
構成ファイルでは、同じインターフェイスを実装する2つの異なるクラスがある場合、宣言は異なる必要があるようです。
正しい方向に向けていただければ幸いです。
前もって感謝します、