c#键入不相关对象之间的转换

时间:2010-12-10 21:12:28

标签: c# type-conversion

我们正在将数据访问层迁移到比当前使用的更新,更受支持且生成更多的DAL。

因此,我们有许多不同的对象,虽然技术上有所不同,但它们代表的数据集合可以轻松地传输/转换到彼此而不会丢失数据。

执行此类型转换的最灵活,最广泛使用或最受欢迎的方法是什么?

我正在考虑编写一组实现IConvertible的部分类。 我还考虑过创建一个System.ComponentModel.TypeConverter来执行转换。 还有其他可能更好的选择,我可能没有考虑过吗?

有哪些选择?

理想情况下,我希望将这些转换保留在扩展类或不同的库中,以免弄乱我们的项目引用。混乱可以存在于这个特殊的转换库中。

例如,

{p}在DAL1.DataTypes我有一个班级Table1Data

{p}在DAL2.DataTypes我有一个班级Table1

感谢。

2 个答案:

答案 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中使用代码片段真是太痛苦了,对不起,如果有任何代码格式问题。