【问题标题】:How to pass parameter to function on pub/sub using nettcpbinding如何使用 nettcpbinding 将参数传递给 pub/sub 上的函数
【发布时间】:2012-12-25 22:14:36
【问题描述】:

我是 nettcpbinding 回调函数的新手,

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

谢谢,

【问题讨论】:

    标签: c#-4.0 wcf-binding publish-subscribe nettcpbinding


    【解决方案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();
      ...
    

    【讨论】:

    • Nichols,一个困惑,如果我想根据传递的 messageId 从数据库中获取数据怎么办。
    • 这取决于你使用什么框架来访问数据库,但在某些时候你将不得不编写代码来为不同的messageIds调用不同的数据库查询
    • Nichol,我认为问题没有正确提出(我知道在数据库方面)。但我得到了解决方案。谢谢,
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-30
    • 1970-01-01
    • 2014-06-04
    相关资源
    最近更新 更多