temel sınıfında bir ilkel özellik enjekte Bu question ile ilgili, ancak bu soru StructureMap hakkındadır.StructureMap:
public interface ICommandHandler
{
ILogger Logger { get; set; }
bool SendAsync { get; set; }
}
Ben ICommandHandler
uygulamak ve çözülmesi gereken birden çok uygulamaları vardır:
aşağıdaki arayüz tanımı var. Bu iki özelliği, ICommandHandler
uygulayan örneklerde otomatik olarak enjekte etmek istiyorum.
public abstract class BaseCommandHandler : ICommandHandler
{
[SetterProperty]
public ILogger Logger { get; set; }
public bool SendAsync { get; set; }
}
Ancak bu, tüm ilkel bool
tip enjekte bana yardımcı olmuyor:
[SetterProperty]
nitelik vererek
ILogger
enjekte yapmak için bir yol bulmuş uygulamalar.
İşte
public interface ICommandHandler<TCommand> : ICommandHandler
where TCommand : Command
{
void Handle(TCommand command);
}
benim şimdiki yapılandırma:
komut işleyicileri taban arabirimden kalıtımla genel arabirimi uygulamak
var container = new Container();
container.Configure(r => r
.For<ICommandHandler<CustomerMovedCommand>>()
.Use<CustomerMovedHandler>()
.SetProperty(handler =>
{
handler.SendAsync = true;
}));
container.Configure(r => r
.For<ICommandHandler<ProcessOrderCommand>>()
.Use<ProcessOrderHandler>()
.SetProperty(handler =>
{
handler.SendAsync = true;
}));
container.Configure(r => r
.For<ICommandHandler<CustomerLeftCommand>>()
.Use<CustomerLeftHandler>()
.SetProperty(handler =>
{
handler.SendAsync = true;
}));
// etc. etc. etc.
Gördüğünüz gibi, ben her biri için özelliğini ayarlayın ve Oldukça hantal olan her konfigürasyon (ancak SetProperty
'un Action<T>
delegesini kabul etmesi oldukça hoştur).
StructureMap ile bunu daha verimli yapmak için hangi yollar vardır?
Sizin için iki başparmak yukarıya! Çok teşekkür ederim. – Steven