【发布时间】:2009-03-13 22:49:06
【问题描述】:
我有这个服务合同
[OperationContract(IsOneWay=true)]
void ProcessMessage(Message message);
还有这些物品
[DataContract]
public class Message
{
[DataMember]
public long Id { get; set; }
[DataMember]
public string Body { get; set; }
}
[DataContract]
public class ExtendedMessage : Message
{
[DataMember]
public NameValueCollection AdditionalData { get; set; }
}
如果我将子类传递给服务方法,WCF 是否能够处理?还是会丢弃所有不在基类中的额外属性?
ExtendedMessage msg = new ExtendedMessage();
...
ProcessMessage(msg);
【问题讨论】:
-
你有没有达到这个效果?我与这些主题斗争了很长时间。是否有可能在 [OperationContract] HandleData(Base base);并从 SoapUI 发送一些来自 Base 的驱动对象?然后如果 c# 会意识到它在基础上是持有某个子类的实例 - 所以它也会调用适当的方法(多态性等)