2

Unity.AutoRegistrationを使用して、インターフェイスを実装に自動配線しようとしています。私の構成は次のようになります。

public static class UnityConfigurator
{
    public static UnityContainer Configure()
    {
        var container = new UnityContainer();
        container.ConfigureAutoRegistration()     
                 .LoadAssemblyFrom(typeof(UnityConfigurator).Assembly.Location)
                 .LoadAssemblyFrom(typeof(ICountryFilterDataRepository).Assembly.Location)
                 .ExcludeSystemAssemblies()
                 .ExcludeAssemblies(a => a.GetName().FullName.Contains("Specs"))                     
                 .ApplyAutoRegistration();
        return container;
    }
}

しかし、それは機能していません:(マッピングが設定されていないことを明確に意味するこのエラーが表示されます:

現在のタイプ Blah.IFoo はインターフェイスであり、構築できません。タイプマッピングがありませんか?

構成コードの何が問題になっていますか? ありがとう

4

2 に答える 2

2

この行を追加すると、問題が解決するはずです

.Include(If.ImplementsITypeName, Then.Register())
于 2012-01-03T00:17:02.890 に答える
0

Unity.AutoRegistration に代わるものを試してみたいと思うかもしれません。

CodePlexのTecXプロジェクトには、規約による登録のサポートを含む StructureMap 構成エンジンのポートがあります。Unity の構成は、TecX.Unity.Configuration にあります。それがどのように使用されるかを示す UnitTests があります。


アップデート:

IFoo の TecX 自動登録では、次のようになります。

ConfigurationBuilder builder = new ConfigurationBuilder();
builder.Scan(
  x =>
  {
    x.AssembliesFromApplicationBaseDirectory();
    x.With(new ImplementsIInterfaceNameConvention());
  });
于 2011-12-08T20:32:08.627 に答える