我正在使用外部C#Web服务方法,它返回一个简单的计算结果对象,如下所示:
[Serializable]
public class CalculationResult
{
public string Name { get; set; }
public string Unit { get; set; }
public decimal? Value { get; set; }
}
当我在ASP .NET项目中向此服务添加Web引用时,Visual Studio足以生成匹配的类,因此我可以轻松地使用它并使用它。
我正在使用Castle Windsor,我可能想插入获取计算结果对象的其他方法,所以我想在我的解决方案中使用一个公共类CalculationResult(或ICalculationResult),我的所有对象都可以使用它,这将始终匹配从外部Web服务1:1返回的对象。
无论如何,我可以告诉我的Web服务客户端为特定的类而不是生成的类进行水合?我宁愿不手动做:
foreach(var fromService in calcuationResultsFromService)
{
ICalculationResult calculationResult = new CalculationResult()
{
Name = fromService.Name
};
yield return calculationResult;
}
修改:我很高兴使用服务参考类型而不是旧的 Web参考。
答案 0 :(得分:1)
您可以使用http://automapper.codeplex.com。通常,它用于将域对象简化为DTO。
答案 1 :(得分:0)
首先,您的网络服务 - 为什么要实际生成课程?使用常见的共享类型。
http://www.codeproject.com/KB/WCF/WCFCollectionTypeSharing.aspx
这在使用公共网络服务时显然不是一种选择,但是当你控制两端时......这有很多优点。
其中包括完整的代码控制;)