【发布时间】:2012-12-25 22:14:36
【问题描述】:
我是 nettcpbinding 回调函数的新手,
我有一个场景,我需要根据参数 pass ex 获取结果。 messageId 并获取发布者根据 messageId 发布到订阅客户端时的结果数据。
谢谢,
【问题讨论】:
标签: c#-4.0 wcf-binding publish-subscribe nettcpbinding
我是 nettcpbinding 回调函数的新手,
我有一个场景,我需要根据参数 pass ex 获取结果。 messageId 并获取发布者根据 messageId 发布到订阅客户端时的结果数据。
谢谢,
【问题讨论】:
标签: c#-4.0 wcf-binding publish-subscribe nettcpbinding
您可以使用KnownType 属性来做到这一点。
您的结果类必须继承自一个基类,该基类装饰有所有可能的派生类:
[KnownType( typeof( ResultClassOne ) )]
[KnownType( typeof( ResultClassTwo ) )]
class ResultBase
{
public int MessageId { get; set; }
}
class ResultClassOne : ResultBase
{
... other properties
}
class ResultClassTwo : ResultBase
{
... other properties
}
这将允许正确序列化所有派生类。
然后在你的合约接口中使用基类:
ResultBase Method( int messageId )
并且在实现中,传回正确派生类的实例:
public ResultBase Method( int messageId )
{
if ( messageId == 1 ) return new ResultClassOne();
...
【讨论】:
messageIds调用不同的数据库查询