1

我是 nettcpbinding 回调函数的新手,

我有一个场景,我需要根据参数 pass ex 获取结果。messageId 并获取发布者根据 messageId 发布到订阅客户端时的结果数据。

谢谢,

4

1 回答 1

1

您可以使用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();
  ...
于 2013-01-11T10:57:39.683 回答