首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WCF返回泛型类型

WCF返回泛型类型
EN

Stack Overflow用户
提问于 2016-08-01 01:20:45
回答 2查看 1K关注 0票数 0

我想在我的WCF应用程序中创建一个接口和几个类。例如:接口ITable。类客户: ITable和雇员: ITable

在这之后,如果有可能创造出...

代码语言:javascript
复制
[OperationContract]
IEnumerable<T> GetTable<T>() where T: ITable, new();

...in我的服务接口。

我试过一次,但应用程序变得很粗糙。

我希望这能简化我在客户端的工作。只需使用Client.GetTable或Client.GetTable来获取我的ITables列表。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-01 07:13:11

这样做的问题是,因为它没有指定具体的类型,所以它允许客户端使用实现ITable的类型调用服务,但服务并不知道。从客户端来看,它看起来像是在工作,因为类符合泛型约束,但是服务无法对其进行反序列化。

您可以向服务添加一个或多个ServiceKnownType属性,如下所示:

代码语言:javascript
复制
[ServiceKnownType(typeof(SomeTable))]
[ServiceKnownType(typeof(SomeOtherTable))]
[ServiceContract]
public interface IYourService
{
    [OperationContract]
    IEnumerable<T> GetTable<T>() where T: ITable, new();
}

这样,服务就知道要反序列化成哪些具体的类型。

票数 0
EN

Stack Overflow用户

发布于 2016-08-01 13:17:56

您可以使用接受方法和声明该方法的类型的ServiceKnownType属性重载。该方法应返回IEnumerable。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38686560

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档