Unity自動登録

Unity自動登録


Unity自動登録は、確立されたルールに従ってタイプを自動的に登録するための流fluentなインターフェイスを提供することにより、Unityコンテナの機能を拡張します。 ほんの数行のコードを使用して、指定されたアセンブリをスキャンし、指定されたルールに一致するすべてのタイプを登録できます。


ルールとして、述語、ラムダ式、およびメソッド呼び出しを使用できます。 ヘルパーが条件を記述するためのすべての典型的なオプションを提供する場合。

以下は、Unity自動登録を使用した構成の例です。

  1. var container = new UnityContainer(); container .ConfigureAutoRegistration() .LoadAssemblyFrom( "Plugin.dll" ) .IncludeAllLoadedAssemblies() .ExcludeSystemAssemblies() .ExcludeAssemblies(a => a.GetName().FullName.Contains( "Test" )) .Include(If.Implements<ILogger>, Then.Register().UsingPerCallMode()) .Include(If.ImplementsITypeName, Then.Register().WithTypeName()) .Include(If.Implements<ICustomerRepository>, Then.Register().WithName( "Sample" )) .Include(If.Implements<IOrderRepository>, Then.Register().AsSingleInterfaceOfType().UsingPerCallMode()) .Include(If.DecoratedWith<LoggerAttribute>, Then.Register() .AsInterface<IDisposable>() .WithTypeName() .UsingLifetime<MyLifetimeManager>()) .Exclude(t => t.Name.Contains( "Trace" )) .ApplyAutoRegistration();
  2. var container = new UnityContainer(); container .ConfigureAutoRegistration() .LoadAssemblyFrom( "Plugin.dll" ) .IncludeAllLoadedAssemblies() .ExcludeSystemAssemblies() .ExcludeAssemblies(a => a.GetName().FullName.Contains( "Test" )) .Include(If.Implements<ILogger>, Then.Register().UsingPerCallMode()) .Include(If.ImplementsITypeName, Then.Register().WithTypeName()) .Include(If.Implements<ICustomerRepository>, Then.Register().WithName( "Sample" )) .Include(If.Implements<IOrderRepository>, Then.Register().AsSingleInterfaceOfType().UsingPerCallMode()) .Include(If.DecoratedWith<LoggerAttribute>, Then.Register() .AsInterface<IDisposable>() .WithTypeName() .UsingLifetime<MyLifetimeManager>()) .Exclude(t => t.Name.Contains( "Trace" )) .ApplyAutoRegistration();
  3. var container = new UnityContainer(); container .ConfigureAutoRegistration() .LoadAssemblyFrom( "Plugin.dll" ) .IncludeAllLoadedAssemblies() .ExcludeSystemAssemblies() .ExcludeAssemblies(a => a.GetName().FullName.Contains( "Test" )) .Include(If.Implements<ILogger>, Then.Register().UsingPerCallMode()) .Include(If.ImplementsITypeName, Then.Register().WithTypeName()) .Include(If.Implements<ICustomerRepository>, Then.Register().WithName( "Sample" )) .Include(If.Implements<IOrderRepository>, Then.Register().AsSingleInterfaceOfType().UsingPerCallMode()) .Include(If.DecoratedWith<LoggerAttribute>, Then.Register() .AsInterface<IDisposable>() .WithTypeName() .UsingLifetime<MyLifetimeManager>()) .Exclude(t => t.Name.Contains( "Trace" )) .ApplyAutoRegistration();
  4. var container = new UnityContainer(); container .ConfigureAutoRegistration() .LoadAssemblyFrom( "Plugin.dll" ) .IncludeAllLoadedAssemblies() .ExcludeSystemAssemblies() .ExcludeAssemblies(a => a.GetName().FullName.Contains( "Test" )) .Include(If.Implements<ILogger>, Then.Register().UsingPerCallMode()) .Include(If.ImplementsITypeName, Then.Register().WithTypeName()) .Include(If.Implements<ICustomerRepository>, Then.Register().WithName( "Sample" )) .Include(If.Implements<IOrderRepository>, Then.Register().AsSingleInterfaceOfType().UsingPerCallMode()) .Include(If.DecoratedWith<LoggerAttribute>, Then.Register() .AsInterface<IDisposable>() .WithTypeName() .UsingLifetime<MyLifetimeManager>()) .Exclude(t => t.Name.Contains( "Trace" )) .ApplyAutoRegistration();
  5. var container = new UnityContainer(); container .ConfigureAutoRegistration() .LoadAssemblyFrom( "Plugin.dll" ) .IncludeAllLoadedAssemblies() .ExcludeSystemAssemblies() .ExcludeAssemblies(a => a.GetName().FullName.Contains( "Test" )) .Include(If.Implements<ILogger>, Then.Register().UsingPerCallMode()) .Include(If.ImplementsITypeName, Then.Register().WithTypeName()) .Include(If.Implements<ICustomerRepository>, Then.Register().WithName( "Sample" )) .Include(If.Implements<IOrderRepository>, Then.Register().AsSingleInterfaceOfType().UsingPerCallMode()) .Include(If.DecoratedWith<LoggerAttribute>, Then.Register() .AsInterface<IDisposable>() .WithTypeName() .UsingLifetime<MyLifetimeManager>()) .Exclude(t => t.Name.Contains( "Trace" )) .ApplyAutoRegistration();
  6. var container = new UnityContainer(); container .ConfigureAutoRegistration() .LoadAssemblyFrom( "Plugin.dll" ) .IncludeAllLoadedAssemblies() .ExcludeSystemAssemblies() .ExcludeAssemblies(a => a.GetName().FullName.Contains( "Test" )) .Include(If.Implements<ILogger>, Then.Register().UsingPerCallMode()) .Include(If.ImplementsITypeName, Then.Register().WithTypeName()) .Include(If.Implements<ICustomerRepository>, Then.Register().WithName( "Sample" )) .Include(If.Implements<IOrderRepository>, Then.Register().AsSingleInterfaceOfType().UsingPerCallMode()) .Include(If.DecoratedWith<LoggerAttribute>, Then.Register() .AsInterface<IDisposable>() .WithTypeName() .UsingLifetime<MyLifetimeManager>()) .Exclude(t => t.Name.Contains( "Trace" )) .ApplyAutoRegistration();
  7. var container = new UnityContainer(); container .ConfigureAutoRegistration() .LoadAssemblyFrom( "Plugin.dll" ) .IncludeAllLoadedAssemblies() .ExcludeSystemAssemblies() .ExcludeAssemblies(a => a.GetName().FullName.Contains( "Test" )) .Include(If.Implements<ILogger>, Then.Register().UsingPerCallMode()) .Include(If.ImplementsITypeName, Then.Register().WithTypeName()) .Include(If.Implements<ICustomerRepository>, Then.Register().WithName( "Sample" )) .Include(If.Implements<IOrderRepository>, Then.Register().AsSingleInterfaceOfType().UsingPerCallMode()) .Include(If.DecoratedWith<LoggerAttribute>, Then.Register() .AsInterface<IDisposable>() .WithTypeName() .UsingLifetime<MyLifetimeManager>()) .Exclude(t => t.Name.Contains( "Trace" )) .ApplyAutoRegistration();
  8. var container = new UnityContainer(); container .ConfigureAutoRegistration() .LoadAssemblyFrom( "Plugin.dll" ) .IncludeAllLoadedAssemblies() .ExcludeSystemAssemblies() .ExcludeAssemblies(a => a.GetName().FullName.Contains( "Test" )) .Include(If.Implements<ILogger>, Then.Register().UsingPerCallMode()) .Include(If.ImplementsITypeName, Then.Register().WithTypeName()) .Include(If.Implements<ICustomerRepository>, Then.Register().WithName( "Sample" )) .Include(If.Implements<IOrderRepository>, Then.Register().AsSingleInterfaceOfType().UsingPerCallMode()) .Include(If.DecoratedWith<LoggerAttribute>, Then.Register() .AsInterface<IDisposable>() .WithTypeName() .UsingLifetime<MyLifetimeManager>()) .Exclude(t => t.Name.Contains( "Trace" )) .ApplyAutoRegistration();
  9. var container = new UnityContainer(); container .ConfigureAutoRegistration() .LoadAssemblyFrom( "Plugin.dll" ) .IncludeAllLoadedAssemblies() .ExcludeSystemAssemblies() .ExcludeAssemblies(a => a.GetName().FullName.Contains( "Test" )) .Include(If.Implements<ILogger>, Then.Register().UsingPerCallMode()) .Include(If.ImplementsITypeName, Then.Register().WithTypeName()) .Include(If.Implements<ICustomerRepository>, Then.Register().WithName( "Sample" )) .Include(If.Implements<IOrderRepository>, Then.Register().AsSingleInterfaceOfType().UsingPerCallMode()) .Include(If.DecoratedWith<LoggerAttribute>, Then.Register() .AsInterface<IDisposable>() .WithTypeName() .UsingLifetime<MyLifetimeManager>()) .Exclude(t => t.Name.Contains( "Trace" )) .ApplyAutoRegistration();
  10. var container = new UnityContainer(); container .ConfigureAutoRegistration() .LoadAssemblyFrom( "Plugin.dll" ) .IncludeAllLoadedAssemblies() .ExcludeSystemAssemblies() .ExcludeAssemblies(a => a.GetName().FullName.Contains( "Test" )) .Include(If.Implements<ILogger>, Then.Register().UsingPerCallMode()) .Include(If.ImplementsITypeName, Then.Register().WithTypeName()) .Include(If.Implements<ICustomerRepository>, Then.Register().WithName( "Sample" )) .Include(If.Implements<IOrderRepository>, Then.Register().AsSingleInterfaceOfType().UsingPerCallMode()) .Include(If.DecoratedWith<LoggerAttribute>, Then.Register() .AsInterface<IDisposable>() .WithTypeName() .UsingLifetime<MyLifetimeManager>()) .Exclude(t => t.Name.Contains( "Trace" )) .ApplyAutoRegistration();
  11. var container = new UnityContainer(); container .ConfigureAutoRegistration() .LoadAssemblyFrom( "Plugin.dll" ) .IncludeAllLoadedAssemblies() .ExcludeSystemAssemblies() .ExcludeAssemblies(a => a.GetName().FullName.Contains( "Test" )) .Include(If.Implements<ILogger>, Then.Register().UsingPerCallMode()) .Include(If.ImplementsITypeName, Then.Register().WithTypeName()) .Include(If.Implements<ICustomerRepository>, Then.Register().WithName( "Sample" )) .Include(If.Implements<IOrderRepository>, Then.Register().AsSingleInterfaceOfType().UsingPerCallMode()) .Include(If.DecoratedWith<LoggerAttribute>, Then.Register() .AsInterface<IDisposable>() .WithTypeName() .UsingLifetime<MyLifetimeManager>()) .Exclude(t => t.Name.Contains( "Trace" )) .ApplyAutoRegistration();
  12. var container = new UnityContainer(); container .ConfigureAutoRegistration() .LoadAssemblyFrom( "Plugin.dll" ) .IncludeAllLoadedAssemblies() .ExcludeSystemAssemblies() .ExcludeAssemblies(a => a.GetName().FullName.Contains( "Test" )) .Include(If.Implements<ILogger>, Then.Register().UsingPerCallMode()) .Include(If.ImplementsITypeName, Then.Register().WithTypeName()) .Include(If.Implements<ICustomerRepository>, Then.Register().WithName( "Sample" )) .Include(If.Implements<IOrderRepository>, Then.Register().AsSingleInterfaceOfType().UsingPerCallMode()) .Include(If.DecoratedWith<LoggerAttribute>, Then.Register() .AsInterface<IDisposable>() .WithTypeName() .UsingLifetime<MyLifetimeManager>()) .Exclude(t => t.Name.Contains( "Trace" )) .ApplyAutoRegistration();
  13. var container = new UnityContainer(); container .ConfigureAutoRegistration() .LoadAssemblyFrom( "Plugin.dll" ) .IncludeAllLoadedAssemblies() .ExcludeSystemAssemblies() .ExcludeAssemblies(a => a.GetName().FullName.Contains( "Test" )) .Include(If.Implements<ILogger>, Then.Register().UsingPerCallMode()) .Include(If.ImplementsITypeName, Then.Register().WithTypeName()) .Include(If.Implements<ICustomerRepository>, Then.Register().WithName( "Sample" )) .Include(If.Implements<IOrderRepository>, Then.Register().AsSingleInterfaceOfType().UsingPerCallMode()) .Include(If.DecoratedWith<LoggerAttribute>, Then.Register() .AsInterface<IDisposable>() .WithTypeName() .UsingLifetime<MyLifetimeManager>()) .Exclude(t => t.Name.Contains( "Trace" )) .ApplyAutoRegistration();
  14. var container = new UnityContainer(); container .ConfigureAutoRegistration() .LoadAssemblyFrom( "Plugin.dll" ) .IncludeAllLoadedAssemblies() .ExcludeSystemAssemblies() .ExcludeAssemblies(a => a.GetName().FullName.Contains( "Test" )) .Include(If.Implements<ILogger>, Then.Register().UsingPerCallMode()) .Include(If.ImplementsITypeName, Then.Register().WithTypeName()) .Include(If.Implements<ICustomerRepository>, Then.Register().WithName( "Sample" )) .Include(If.Implements<IOrderRepository>, Then.Register().AsSingleInterfaceOfType().UsingPerCallMode()) .Include(If.DecoratedWith<LoggerAttribute>, Then.Register() .AsInterface<IDisposable>() .WithTypeName() .UsingLifetime<MyLifetimeManager>()) .Exclude(t => t.Name.Contains( "Trace" )) .ApplyAutoRegistration();
  15. var container = new UnityContainer(); container .ConfigureAutoRegistration() .LoadAssemblyFrom( "Plugin.dll" ) .IncludeAllLoadedAssemblies() .ExcludeSystemAssemblies() .ExcludeAssemblies(a => a.GetName().FullName.Contains( "Test" )) .Include(If.Implements<ILogger>, Then.Register().UsingPerCallMode()) .Include(If.ImplementsITypeName, Then.Register().WithTypeName()) .Include(If.Implements<ICustomerRepository>, Then.Register().WithName( "Sample" )) .Include(If.Implements<IOrderRepository>, Then.Register().AsSingleInterfaceOfType().UsingPerCallMode()) .Include(If.DecoratedWith<LoggerAttribute>, Then.Register() .AsInterface<IDisposable>() .WithTypeName() .UsingLifetime<MyLifetimeManager>()) .Exclude(t => t.Name.Contains( "Trace" )) .ApplyAutoRegistration();
  16. var container = new UnityContainer(); container .ConfigureAutoRegistration() .LoadAssemblyFrom( "Plugin.dll" ) .IncludeAllLoadedAssemblies() .ExcludeSystemAssemblies() .ExcludeAssemblies(a => a.GetName().FullName.Contains( "Test" )) .Include(If.Implements<ILogger>, Then.Register().UsingPerCallMode()) .Include(If.ImplementsITypeName, Then.Register().WithTypeName()) .Include(If.Implements<ICustomerRepository>, Then.Register().WithName( "Sample" )) .Include(If.Implements<IOrderRepository>, Then.Register().AsSingleInterfaceOfType().UsingPerCallMode()) .Include(If.DecoratedWith<LoggerAttribute>, Then.Register() .AsInterface<IDisposable>() .WithTypeName() .UsingLifetime<MyLifetimeManager>()) .Exclude(t => t.Name.Contains( "Trace" )) .ApplyAutoRegistration();
  17. var container = new UnityContainer(); container .ConfigureAutoRegistration() .LoadAssemblyFrom( "Plugin.dll" ) .IncludeAllLoadedAssemblies() .ExcludeSystemAssemblies() .ExcludeAssemblies(a => a.GetName().FullName.Contains( "Test" )) .Include(If.Implements<ILogger>, Then.Register().UsingPerCallMode()) .Include(If.ImplementsITypeName, Then.Register().WithTypeName()) .Include(If.Implements<ICustomerRepository>, Then.Register().WithName( "Sample" )) .Include(If.Implements<IOrderRepository>, Then.Register().AsSingleInterfaceOfType().UsingPerCallMode()) .Include(If.DecoratedWith<LoggerAttribute>, Then.Register() .AsInterface<IDisposable>() .WithTypeName() .UsingLifetime<MyLifetimeManager>()) .Exclude(t => t.Name.Contains( "Trace" )) .ApplyAutoRegistration();
  18. var container = new UnityContainer(); container .ConfigureAutoRegistration() .LoadAssemblyFrom( "Plugin.dll" ) .IncludeAllLoadedAssemblies() .ExcludeSystemAssemblies() .ExcludeAssemblies(a => a.GetName().FullName.Contains( "Test" )) .Include(If.Implements<ILogger>, Then.Register().UsingPerCallMode()) .Include(If.ImplementsITypeName, Then.Register().WithTypeName()) .Include(If.Implements<ICustomerRepository>, Then.Register().WithName( "Sample" )) .Include(If.Implements<IOrderRepository>, Then.Register().AsSingleInterfaceOfType().UsingPerCallMode()) .Include(If.DecoratedWith<LoggerAttribute>, Then.Register() .AsInterface<IDisposable>() .WithTypeName() .UsingLifetime<MyLifetimeManager>()) .Exclude(t => t.Name.Contains( "Trace" )) .ApplyAutoRegistration();
  19. var container = new UnityContainer(); container .ConfigureAutoRegistration() .LoadAssemblyFrom( "Plugin.dll" ) .IncludeAllLoadedAssemblies() .ExcludeSystemAssemblies() .ExcludeAssemblies(a => a.GetName().FullName.Contains( "Test" )) .Include(If.Implements<ILogger>, Then.Register().UsingPerCallMode()) .Include(If.ImplementsITypeName, Then.Register().WithTypeName()) .Include(If.Implements<ICustomerRepository>, Then.Register().WithName( "Sample" )) .Include(If.Implements<IOrderRepository>, Then.Register().AsSingleInterfaceOfType().UsingPerCallMode()) .Include(If.DecoratedWith<LoggerAttribute>, Then.Register() .AsInterface<IDisposable>() .WithTypeName() .UsingLifetime<MyLifetimeManager>()) .Exclude(t => t.Name.Contains( "Trace" )) .ApplyAutoRegistration();

資源


http://autoregistration.codeplex.com/からダウンロードできます

Source: https://habr.com/ru/post/J74757/


All Articles