【发布时间】:2015-04-07 16:48:25
【问题描述】:
我有一个问题,我们有一个可以为多个客户端提供服务的 ASP.NET Web 应用程序。
唯一的区别是应用需要将一些 JSON 字符串转换为 <T> 类型的 .NET 对象,以便将该对象传递给 WCF 服务。
为此,我正在使用 Newtonsoft.Json.Converter:
T input = JsonConvert.DeserializeObject<T>(jsonInput);
问题在于该类型<T> 在设计时是未知的。
但是在反序列化之后,我需要一个通用的强类型对象,以便我可以将它传递给 WCF 服务。原因是每个客户端的 WCF 服务不同,每个客户端的参数 input 可能有不同的结构。
var client = new CalcEngine.CalculatorClient();
var input = new CalcEngine.CalcInputTypes();
var result = client.Calculate(input);
这里的输入是 CalcEngine.CalcInputTypes 类型。 对于 clientA 和 clientB,CalcEngine.CalcInputTypes 可能有不同的结构。
实现这一目标的最佳方法是什么?
谢谢。
【问题讨论】:
-
您如何检测呼叫哪个客户端?当您在编译时知道您正在调用哪个客户端时,您在编译时就知道要为
T填写什么@ -
嗨 Scott,WCF ABC 配置(在 web.config 中)决定了调用什么服务。问题在于传递类型。但是现在变了,我跟团队验证过,传递参数的类型总是同名,但结构不同。这是一个不同的故事,因为在代码中我不需要知道结构以便将 JSON 字符串反序列化到该对象中,它会自动复制匹配属性的值。