【发布时间】:2011-07-13 20:48:36
【问题描述】:
我知道当您创建服务时,您可以创建通用 DataContract:
[DataContract(Name = "Get{0}Request")
public sealed class GetItemRequest<T>
where T : class, new() { ... }
[DataContract(Name = "Get{0}Response")
public sealed class GetItemResponse<T>
where T : class, new() { ... }
[ServiceContract]
public void MyService : IMyService
{
[OperationContract]
GetItemResponse<Foo> GetItem(GetItemRequest<Foo> request);
}
这将为我的 WSDL 生成 GetFooRequest 和 GetFooResponse 定义。现在,我很好奇的是,是否有可能朝另一个方向发展?
是否可以创建一个使用 Generic DataContracts 的客户端并将其作为具体对象传递给服务器?我在添加服务参考后尝试了这个,但效果并不好。所以我更多的是想知道是否有任何方法(即使这意味着不添加服务引用)来做到这一点?
【问题讨论】:
-
我承认这个功能(如here on MSDN 所述)是不是我以前见过的。很有趣。
-
@Marc:是的,但它只用了一半。负责
ServiceContract和OperationContract类的另一个团队在生成 Name 值时懈怠了,并且没有像DataContract那样对泛型进行很好的检查,因此为什么你不能创建具体定义的泛型运营/服务合同!也许是 C# 5? :)
标签: c# generics datacontract wcf