2013-11-01 26 views
0

我有一個事件定義如下:在包含數組的接口上使用nServiceBus的createInstance - 如何實例化數組?

public interface IClass 
{ 
    DateTime EffectiveDate { get; set; } 
    IChild[] Children { get; set; } 
} 

public interface IChild 
{ 
    string From { get; set; } 
    string To { get; set; } 
    decimal ADecimal { get; set; } 
} 

我嘗試使用以下語法

bus.send<IClass>(class=> 
{ 
    class.EffeciveDate = DateTime.now; 
    class.Children = //Not sure what to do here 
} 

如何去實例化數組和填充子對象?

回答

0

Child不需要是在事件上使用createinstance的接口。

你試過:

public interface IClass 
{ 
    DateTime EffectiveDate { get; set; } 
    Child[] Children { get; set; } 
} 

public class Child 
{ 
    string From { get; set; } 
    string To { get; set; } 
    decimal ADecimal { get; set; } 
} 

然後

Child someArray = Child[] { ... some items ... }  

bus.send<IClass>(class=> 
{ 
    class.EffeciveDate = DateTime.Now; 
    class.Children = someArray; 
} 
+0

好點,這將有可能工作。但我想讓孩子成爲一個界面,因爲它本身可能是一個信息。 –

+0

NSB不會阻止具體類的發佈; 「事件就是界面」實際上只是一種慣例。你選擇實例化IClass接口的任何方式也應該起作用。如果你真的想要,你應該可以使用bus.CreateInstance ()。 但我不會。將事件中的接口包含在事件中以使用多態時很誘人。 NSB的專有序列化將不包含任何子類屬性。 因爲你不能從IClass派生出有用的東西,所以它只會是一個爲NSB約定而設計的接口,並不像c#中預期的那樣工作。 – perfectionist

+0

謝謝。據我所知,使用CreateInstance 與bus.send 相同,這就是我遇到的問題。這個問題的範圍超出了我選擇使用接口的原因。 –

相關問題