【问题标题】:How to call a generic c# web service from vb project如何从 vb 项目调用通用 C# Web 服务
【发布时间】:2018-01-30 01:58:47
【问题描述】:

这是我的情况的一个例子:

C# 泛型函数

public string Foo<t>(string test)
{
   return test+test.ToString();
}

VB

webservice.Foo(Of int, "Bar") 

///^这会出错 “没有类型参数,因此不能有类型参数”

通常当我在 C# 中调用类型推断函数时,我会执行 Foo&lt;int&gt;() 之类的操作。但是我不确定如何在VB中做到这一点。我的搜索没有结果。如果有人能引导我去哪里寻找解决方案或帮助我,我将不胜感激!

---更新----

经过更多研究后,我发现除非有界,否则不能将通用函数作为合约。如果你想了解更多可以点击(here)上面写着如下

“您不能定义依赖泛型类型参数的 WCF 协定。泛型是特定于 .NET 的,使用它们会违反 WCF 面向服务的性质。但是,数据协定可以包含一个集合作为数据成员,因为WCF 为集合提供专用的编组规则。”苏莱曼

&

“Sleiman 是正确的,但是可以使用 this article 中描述的有界泛型,并且您可能能够实现您想要的。这允许您在服务中创建一个泛型类型并公开它。但是消费者不会像服务操作中指定的类型那样将其视为通用的。”伊德戈尔曼。

【问题讨论】:

  • &lt;T&gt; 根本没有使用...
  • 在某处创建 Web 服务,然后查看其中一种方法的生成代码...您应该在那里看到答案
  • 您的问题与 WCF 无关。您提供的代码毫无意义。您应该修复代码以显示实际的泛型函数(使用类型参数的位置),以便为您的问题提供一些实质内容。

标签: c# vb.net wcf generics


【解决方案1】:

试试这个:

webservice.Foo(of int)("Bar")

【讨论】:

  • 我得到同样的错误“没有类型参数,所以不能有类型参数”
  • 你能把 WSDL 贴在这里吗?
  • 经过一番研究,我发现我无法声明一个通用的 WCF 函数。我已经更新了我原来的帖子。另外,您是正确的,这就是您在 VB 中进行类型推断的方式。
【解决方案2】:

不可能在 WCF 服务中拥有一个泛型函数并调用它(不包括有界泛型)。我会在更新后的帖子中详细介绍它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-09
    • 1970-01-01
    相关资源
    最近更新 更多