使用nServiceBus';在包含数组的接口上创建实例-如何实例化数组?

使用nServiceBus';在包含数组的接口上创建实例-如何实例化数组?,nservicebus,Nservicebus,我有一个事件定义如下: 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; } } 我尝试使用

我有一个事件定义如下:

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
}
bus.send(类=>
{
class.EffeciveDate=DateTime.now;
class.Children=//不确定在这里做什么
}

如何实例化数组并填充子对象?

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[]{…某些项…}
发送(类=>
{
class.EffeciveDate=DateTime.Now;
class.Children=someArray;
}

好的一点,这可能会起作用。但我希望child成为一个接口,因为它本身可能是一条消息。NSB不阻止发布具体类;“事件就是接口”在实践中似乎只是一种约定。您选择的任何实例化IClass接口的方式都应该可以使用。您应该能够使用bus.CreateInstance()如果你真的想。但我不会。当你在事件中包含接口时,使用多态性是很有诱惑力的。NSB的专有序列化将不包括任何子类属性。因为你不能有效地从IClass派生,因此它将只是一个符合NSB约定的接口,而不会在c#中表现出预期的行为。谢谢。使用据我所知,CreateInstance与bus.send相同,这就是我遇到的问题。我选择使用接口的原因超出了这个问题的范围。
Child someArray = Child[] { ... some items ... }    

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