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 中找到。有显示它是如何使用的单元测试。


更新:

使用 TecX 自动注册 IFoo 将如下所示:

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