基类的一个子保护方法得到了下面的代码你怎么称呼从动态
protected virtual void InternalChange(DomainEvent @event)
{
((dynamic) this).Apply(@event);
}
子对象实现通过一些领域来处理事件的逻辑,例如
protected Apply (Message1 message)
{
}
protected Apply (Message2 message)
{
}
然而,这给出了一个错误,说它无法访问。我试过虚拟但没有运气..
任何想法?希望没有像这种方法反射。 (例如http://blogs.msdn.com/b/davidebb/archive/2010/01/18/use-c-4-0-dynamic-to-drastically-simplify-your-private-reflection-code.aspx)
更多信息我可以将InternalChange移动到子类,但是id没有让子进行调度。
编辑现在我使用这个在孩子(和作出的抽象父)的作品,但它丑陋的ID,而实施者不用担心调度。
protected void Handle(DomainEvent message)
{
Handle ((dynamic) message);
}
Message1和Message2是DomainEvent类型,这是我需要的棘手部分运行时通过动态投射/重载...这也是为什么我不能将抽象方法放在基类中,因为我不知道参数实现者将使用。 – user1496062
如果'Message1'和'Message2'继承自'DomainEvent',则不能上传该方向。我建议你使用关键字'as'来确定发送到'InternalChange'的实际类型。 – Matthew
但是代码并不知道它来自事件源DB的具体类型......当然,我可以创建一个case语句或使用反射,但有没有更好的方法? – user1496062