none
服务契约的通用性问题 RRS feed

  • 问题

  • 大家好,咨询一个问题!

    我在定义服务契约的接口时,会涉及到使用泛型类的情况,例如这样的一个服务接口申明:string GetUserInfo(List<UserInfo> Info,string Name),我想把参数List<UserInfo> 这个环节设计成具有通用性,避免针对不同的泛型参数都要去申明一个服务的接口,请教大家,应当如何去实现。谢谢!

    2019年12月2日 2:50

全部回复

  • Hi,

    如果客户端是基于C#的WCF,你完全不需要担心这一点。 我们可以使用List<T>类型定义这个函数签名,服务端和客户端完全支持强类型。
    GetUserInfo(List<IUserInfo> info, string name);
    客户端在生成代理类的时候,支持完全映射接口,list<T>,Dictionary<K,V>.
    客户端传参的时候遵循C#的多态性原则,需要T类型必须要实现IUserInfo接口。
    如果客户端不是基于C#的,你也可以定义多个操作协定以兼容其他平台。

    如果您对Visual Studio 或Microsoft Azure相关产品感兴趣,请点击此链接,或扫描以下二维码注册获取相关信息。

    https://i.stack.imgur.com/b3pWC.jpg

    Abraham

    2019年12月3日 10:04
  • 谢谢你的回复。考虑到兼容性的问题,我把接口的参数或返回值都转换为XML进行传输了。
    2019年12月4日 2:14