团结.自动注册不自动注册

本文关键字:注册 团结 | 更新日期: 2023-09-27 18:17:06

我正在尝试使用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;
    }
}

但是它不工作:(我得到这个错误,这显然意味着映射尚未设置:

当前类型,等等等等。IFoo,不能构造的接口。你是不是漏了一种类型映射?

我的配置代码有什么问题?由于

团结.自动注册不自动注册

添加这一行应该可以解决这个问题

.Include(If.ImplementsITypeName, Then.Register())

也许你想尝试Unity.AutoRegistration的替代方案。

CodePlex上的TecX项目有一个StructureMap配置引擎的端口,包括它对约定注册的支持。Unity的配置可以在TecX.Unity.Configuration中找到。有unittest来展示它是如何使用的。


更新:

使用TecX自动注册IFoo将看起来像这样:

ConfigurationBuilder builder = new ConfigurationBuilder();
builder.Scan(
  x =>
  {
    x.AssembliesFromApplicationBaseDirectory();
    x.With(new ImplementsIInterfaceNameConvention());
  });