我们正在将数据访问层迁移到比当前使用的更新,更受支持且生成更多的DAL。
因此,我们有许多不同的对象,虽然技术上有所不同,但它们代表的数据集合可以轻松地传输/转换到彼此而不会丢失数据。
执行此类型转换的最灵活,最广泛使用或最受欢迎的方法是什么?
我正在考虑编写一组实现IConvertible的部分类。 我还考虑过创建一个System.ComponentModel.TypeConverter来执行转换。 还有其他可能更好的选择,我可能没有考虑过吗?
有哪些选择?
理想情况下,我希望将这些转换保留在扩展类或不同的库中,以免弄乱我们的项目引用。混乱可以存在于这个特殊的转换库中。
例如,
{p}在DAL1.DataTypes
我有一个班级Table1Data
{p}在DAL2.DataTypes
我有一个班级Table1
感谢。
答案 0 :(得分:3)
您可以使用自动映射器 - 查看automapper:
AutoMapper使用流畅的配置API来定义对象 - 对象映射策略。 AutoMapper使用基于约定的匹配算法来匹配源值和目标值。
答案 1 :(得分:1)
BLToolkit支持性能相当低的对象映射:http://bltoolkit.net/Doc.ObjectToObject.ashx
public class SourceObject
{
public bool Value1 = true;
public string Value2 = "10";
public string StrValue = "test";
}
public class DestObject
{
[MapField("Value1")] public bool BoolValue;
[MapField("Value2")] public int IntValue;
// If source and destination field or property names are equal,
// there is no need to use MapField attribute.
//
public string StrValue;
}
public void Test()
{
SourceObject source = new SourceObject();
DestObject dest = Map.ObjectToObject<DestObject>(source);
}
更新:最近的SO更新在IE6中使用代码片段真是太痛苦了,对不起,如果有任何代码格式问题。