调用容器时是否可以使用程序集通配符。注册类型?
即,如果我想只注册以 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());
}