我必须从一个发送JSON中描述的数据的干净(呃)REST Web服务中调用一个传统的SOAP Web服务来发送原始DataSet。
我需要将列出我的对象的原始数据集转换为真正的对象列表。
我得到的数据集没有足够的信息,因此转换不是简单的"。它涉及从每个对象的DB中获取附加数据。
这样做的最佳设计模式是什么?我的第一个天真的反射是创建一个方法,将这个数据集作为参数,解析它,并返回一个对象列表,但我觉得必须有一个更好的方法来做到这一点。
我已经看过适配器模式,但我理解它只是"只有"将现有的类转换为另一个类似于"看起来像#34;。我希望将数据从类似于带有id和name的字符串表的内容完全更改为包含每个有用信息的真实实例集合。
我还有另一个类似的问题。我们有一个旧的桌面应用程序和一个新的在线应用程序,它们以不同的方式执行相同的操作。但是,这两个应用程序的保存文件非常不同 我想在这些格式之间创建一个转换器。正如@ VS1所建议的Mapper模式看起来很有希望进行此操作,但我不认为我能够使用像AutoMapper一样简单直接的东西。适配器模式也可能有所帮助。我会调查这些。
答案 0 :(得分:7)
您需要自己构建一种Mapper
,将Dataset
转换为objects
;或者您可以使用AutoMapper等可用工具。
这些映射通常需要Adapter和Builder设计模式的知识。我会强调更多的 Builder 模式在构建此映射时更为重要。
您还可以使用LINQ
和Extension Methods
按照this example来达到您的要求。
答案 1 :(得分:3)
这类工作会浮现一些“模式”:
SoapServiceObject sso = OldService.Get();
IRestServiceObject rso = new RestServiceObjectFacade(sso);
public class SoapServiceObject
{
public string name;
}
public class RestServiceObjectFacade : IRestServiceObject
{
private SoapServiceObject _sso;
public string IRestServiceObject.Title { get { return this._sso.name; } }
public RestServiceObjectFacade(SoapServiceObject sso)
{
this._sso = sso;
}
}