.NET Web Service水合定制类

时间:2010-03-12 07:48:45

标签: c# web-services

我正在使用外部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参考

2 个答案:

答案 0 :(得分:1)

您可以使用http://automapper.codeplex.com。通常,它用于将域对象简化为DTO。

答案 1 :(得分:0)

首先,您的网络服务 - 为什么要实际生成课程?使用常见的共享类型。

http://www.codeproject.com/KB/WCF/WCFCollectionTypeSharing.aspx

这在使用公共网络服务时显然不是一种选择,但是当你控制两端时......这有很多优点。

其中包括完整的代码控制;)