WCF返回泛型类型
本文关键字:泛型类型 返回 WCF | 更新日期: 2023-09-27 17:59:37
我想在WCF应用程序中创建一个接口和几个类。例如:接口ITable。类客户:ITable和员工:ITable
在这之后,如果有可能创造。。。
[OperationContract]
IEnumerable<T> GetTable<T>() where T: ITable, new();
在我的服务界面中。
我试过一次,但申请很激烈。
我希望这能简化我在客户方面的工作。只需使用Client.GetTable或Client.GetTable即可获取我的ITables列表。
问题在于,因为它没有指定具体的类型,所以它允许客户端调用具有实现ITable
但服务不知道的类型的服务。从客户端来看,它似乎可以工作,因为类符合通用约束,但随后服务无法对其进行反序列化
您可以将一个或多个ServiceKnownType
属性添加到您的服务中,如下所示:
[ServiceKnownType(typeof(SomeTable))]
[ServiceKnownType(typeof(SomeOtherTable))]
[ServiceContract]
public interface IYourService
{
[OperationContract]
IEnumerable<T> GetTable<T>() where T: ITable, new();
}
这样,服务就知道要反序列化为什么具体类型。
您可以使用ServiceKnownType属性重载,该属性重载接受一个方法和声明该方法的类型。该方法应返回IEnumerable。