gpt4 book ai didi

wcf - 在启用 REST 的 WCF 服务中映射复杂类型

转载 作者:行者123 更新时间:2023-12-04 07:02:13 25 4
gpt4 key购买 nike

我正在尝试修复我们现有的 WCF 服务,其中一个障碍是使用 Uritemplate 映射复杂类型。例如看看下面的代码

[DataContract]
public class Stock
{
[DataMember]
public string Symbol { get;set; }
[DataMember]
public double FaceValue { get; set; }
}

[ServiceContract]
public interface IRestService
{
[OperationContract]
[WebGet(UriTemplate = "?Symbol={stk.Symbol}")]
void Test1(Stock stk);
}

上面的 Uritemplate 声明肯定不起作用,但这就是我将输入查询变量映射到该对象的属性之一的意图。这可能吗?

提前感谢您的帮助。

最佳答案

你给出的例子并没有说明问题。在这种情况下,所需要的只是传递一个股票代码、一个简单的字符串,并且不需要复杂的类型。

如果您想要传递更复杂的数据集、JSON 编码的对象、使用带有 PUT 或 POST 的 WebInvoke、非参数化的 UriTemplate,并传递表单数据。见 this answer详情。

如果您想要 GET,并且可以传递一小组离散参数,您可以使用 WebGet,一个合适的 UriTemplate,并进行手动映射。像这样:

public enum OptionFlavor { Put, Call }
public class OptionInqury { public String Symbol; public String Month; public OptionFlavor Flavor;}

[OperationContract]
[WebGet(UriTemplate = "/optionquote/{stockSymbol}/{month}/{flavor}")]
void GetOptionPrice(string stockSymbol, string month, string flavor)
{
var x = new OptionInquiry {
Symbol = stockSymbol,
Month = month,
Flavor = (flavor.Equals("put")) ? OptionFlavor.Put : OptionFlavor.Call
};
// off you go...
}

关于wcf - 在启用 REST 的 WCF 服务中映射复杂类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1669269/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com