2

Я новичок в Castle Windsor, и мне было интересно, может ли кто-нибудь помочь мне зарегистрировать следующие компоненты в общем виде, чтобы все мои команды автоматически регистрировались. А также как добавить декоратора.Как авто-регистрация (по соглашению) generic decorator в Castle Windsor

EDIT: Следующее, похоже, работает, но я зациклился на том, как настроить декоратор.

 WindsorContainer container = new WindsorContainer(); 

     container 
      .Register(
       Classes.FromAssemblyInThisApplication() 
        .BasedOn(typeof(ICommand)) 
        .LifestyleTransient()); 

public interface ICommand 
{ 
} 

public interface ICommandArgs 
{ 
} 

public interface ICommand<TArgs> : ICommand where TArgs : ICommandArgs 
{ 
    void Execute(TArgs args); 
} 

public class ChangePasswordArgs : ICommandArgs 
{ 
    public ChangePasswordArgs() 
    { 
    } 
} 

public class ChangePasswordCommand : ICommand<ChangePasswordArgs> 
{ 
    public void Execute(ChangePasswordArgs args) 
    { 
     Console.WriteLine("[CHANGING PASSWORD]"); 
    } 
} 
public class TransactionCommand<TArgs> where TArgs : ICommandArgs 
{ 
    private readonly ICommand<TArgs> innerCommand; 

    public TransactionCommand(ICommand<TArgs> innerCommand) 
    { 
     this.innerCommand = innerCommand; 
    } 

    public void Execute(TArgs args) 
    { 
     this.innerCommand.Execute(args); 
    } 
} 

EDIT: Это где я в настоящее время, но декоратор не решается правильно:

 container.Register(
      Component.For(typeof(ICommand<>)) 
       .ImplementedBy(typeof(TransactionalCommand<>)) 
        .LifestyleTransient(), 
      Classes.FromAssemblyInThisApplication() 
       .BasedOn(typeof(ICommand<>)) 
        .WithService.AllInterfaces() 
         .LifestyleTransient() 
     ); 
+0

Что вы пробовали? Вы читали http://mikehadlow.blogspot.in/2010/01/10-advanced-windsor-tricks-4-how-to.html? –

+0

Да, я сделал, но он не охватывает автоматическую регистрацию – Marco

ответ

2

Here и here списки всех тем, касающихся замок, авто-регистрации (по соглашению) и декораторы. This и this - хорошие примеры. Это будет более продуктивно для вас, если вы сначала попытаетесь найти проблему и будете читать, потому что уже давно ответили. Хорошая книга о IoC в .NET с замком - this one от Mark Seeman. В книге много примеров с замком. Вы можете проверить его блог тоже.

+2

Я знаю, что это старый ответ, но, пожалуйста, подумайте о том, чтобы создать несколько примеров в вашем ответе. Ответы только на ссылки сильно не приветствуются, поскольку ссылки могут меняться или удаляться. –

 Смежные вопросы

  • Нет связанных вопросов^_^