2014-02-05 83 views
1

我想注入的依賴到NServiceBus消息賦值函數...因爲存取器的壽命是由NServiceBus控制(NSB和想要一個paramaterless構造函數),構造器注入將無法正常工作......是否有可能向NServiceBus Message Mutator注入依賴關係?

有任何想法嗎?

更新:這裏是代碼:

public class AddTransactionInformationToOutgoingHeaders : 
          IMutateOutgoingTransportMessages, 
          INeedInitialization 
{ 
    private readonly IProvideTransactionInformation transactionInformationProvider; 

    public void Init() 
    { 
     Configure.Instance.Configurer.ConfigureComponent<AddTransactionInformationToOutgoingHeaders>(DependencyLifecycle.InstancePerCall); 
    } 

    public AddTransactionInformationToOutgoingHeaders() 
    { 
    } 

    public AddTransactionInformationToOutgoingHeaders(IProvideTransactionInformation transactionInformationProvider) 
    { 
     this.transactionInformationProvider = transactionInformationProvider; 
    } 

    public void MutateOutgoing(object[] messages, TransportMessage transportMessage) 
    { 
     ... 
    } 
} 

}

如果我拿走了空構造函數,我從我ConfigureBus(拋出此錯誤消息)調用在Global.asax中: 「沒有爲此對象定義的無參數構造函數。「

回答

1

很確定構造函數和屬性注入都可以工作。什麼是例外?

+0

Andreas,你知道使用StructureMap在構造函數中注入了什麼東西的增變器的代碼示例嗎?我無法得到它的工作,試圖在這篇文章和其他人的建議... – demoncodemonkey

+0

沒關係,我得到它的工作。我錯過了我的對象的子對象的Component.Configure。它支付閱讀*完整*例外的細節... – demoncodemonkey

+1

很高興你得到它! –

2

爲了解決這個問題,我只保留了一個NServiceBus的空構造函數,然後創建了一個重載的構造函數,它取得了由Unity管理的依賴項。

它的工作原理。

不知道mutators可以這樣工作。這是我第一次嘗試將依賴注入到一箇中。

UPDATE:

我身邊這讓通過使用屬性注入的突變,而不是:

public class AddTransactionInformationToOutgoingHeaders : IMutateOutgoingTransportMessages, INeedInitialization 
{ 
    public IProvideTransactionInformation TransactionInformationProvider { get; set; } 

    public void Init() 
    { 
     Configure.Instance.Configurer.ConfigureComponent<AddTransactionInformationToOutgoingHeaders>(DependencyLifecycle.InstancePerCall); 
    } 

    public void MutateOutgoing(object[] messages, TransportMessage transportMessage) 
    { 
     ... 
    } 
} 

完美。

+0

聽起來像一個錯誤。你可以提出一個問題在這裏https://github.com/Particular/NServiceBus/issues – Simon

+1

INeedInitialization需要一個無參數的ctor。嘗試將其移動到單獨的課程? –

+0

Adreas,我剛結束了使用屬性注入。 INeedInitializatino獲得它所需的無參考價值,並且我的班級代碼看起來更加整齊!謝謝您的幫助。僅供參考,觀看了您的NServiceBus PluralSite視頻,非常棒!讓我開始使用消息增強器。任何計劃在不久的將來對PluralSite進行中高級NSB教程? –