【问题标题】:Implement interface at client in the webservice class在 webservice 类中的客户端实现接口
【发布时间】:2013-01-15 07:25:23
【问题描述】:

我在我的项目中引用了一个网络服务。我想在客户端项目的 webservice 类对象中实现一个接口。有可能吗?

我尝试在同一个命名空间中的 web 服务部分类中实现接口。它不起作用。 例如

在客户端

namespace ABCWebService
{
   public partial class MyWebServiceObject : IInterface
   {

   }
}

MyWebServiceObject 是一个对象。

现在在代码中当我尝试将对象转换为接口时它不起作用

例如

foreach(var item in e.Result)

{
    if(item is IInterface) // it doesn't go inside.
    { }
}

任何建议。

如果我在服务器项目中实现接口,则该接口也无法访问。

例如

public class MyWebServiceObject : IInterface
{

}

现在在客户端我将如何引用这个 IInterface ?它不认识。

我应该更改参考文件吗?

谢谢。

【问题讨论】:

  • 什么“不起作用”?你得到了什么错误?
  • 我试图在界面中投射对象,但它不像(obj is IInterface)那样投射
  • Web服务仅供消费,不与服务接口实现。
  • Prasad 我遇到了一些情况,我有多个来自 Web 服务的对象,我必须将这些对象转换为一个对象。
  • 请添加一些代码,说明您要在客户端上执行的操作、遇到的错误以及服务器上的内容。根据问题中的信息很难理解。

标签: c# wcf


【解决方案1】:

您的对象类型应该实现接口,而不是服务。 (除非您有一系列服务?)

【讨论】:

  • MyWebService 只是一个对象而不是服务。
  • "Collection 和 Collection 来自服务。我必须将这些对象转换为单个对象。所以我创建了一个 iterface IInterface 它将具有一些我需要的属性用于进一步操作。 var dataType = Obj1.GetType(); if (dataType is IInterface) { } It is not cast into the interface" 那么Obj1和Obj2实现了IInterface?然后你应该简单地这样做: if(obj1 is IInterface) {} - 如果这不是你要问的,那么我认为你需要编辑你的原始问题,并添加一个完整的方法,展示你试图做什么。
  • 我只是担心如果我在服务项目的 Obj1 和 Obj2 中实现接口。客户端项目中是否可以访问接口
  • 啊……现在我明白你的意思了。这个帖子回答了你的问题:link
  • 它暴露了接口类型的属性,但在我的情况下,该类正在实现该接口,我想在客户端引用该接口。
【解决方案2】:

嘿,我发现了问题。我提到了错误的命名空间。我使用的是服务器命名空间,而不是客户端服务命名空间。

我知道这是非常愚蠢的错误。对不起各位,打扰到你们了。

非常感谢您的宝贵时间和建议。

对于陷入相同情况的人来说,上面的例子可以工作。我的意思是你可以在同一个命名空间下的客户端实现接口。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-26
    • 1970-01-01
    相关资源
    最近更新 更多