统一寄存器类型与程序集通配符



调用容器时是否可以使用程序集通配符。注册类型?

即,如果我想只注册以 Foo.Bar 开头的程序集中的类,有没有办法做到这一点。因此,如果我有 Foo.Bar.Test1 然后是 Foo.Bar.Test2 程序集,它会抓住这两个程序集而不必显式引用这些名称?

是的,你可以这样做。请参阅下面的代码,以在给定命名空间中注册程序集中的类型:

var container = new UnityContainer();
container.AddNewExtension<Interception>();
container.RegisterTypes(
    AllClasses.FromLoadedAssemblies().Where(
      t => t.Namespace == "Foo.Bar"),
    WithMappings.MatchingInterface,
    WithName.Default);

检查是否在特定命名空间下从该程序集注册了所有类型:

Console.WriteLine("Container has {0} Registrations:",
  container.Registrations.Count());
foreach (ContainerRegistration item in container.Registrations)
{
  Console.WriteLine(item.GetMappingAsString());
}

最新更新