2010-12-10 50 views
2

我們正在將數據訪問層遷移到比當前使用的更新,更受支持和更多生成的DAL。c#無關對象之間的類型轉換

因此,我們有許多不同的對象,雖然在技術上有所不同,但它們代表的數據集合可以在不丟失數據的情況下輕鬆傳輸/轉換。

什麼是執行這種類型轉換的最靈活或最廣泛使用或最優選的等方法?

我正在考慮編寫一套實現IConvertible的部分類。 我也考慮過創建一個System.ComponentModel.TypeConverter來執行轉換。 有沒有其他的選擇可能會更好,我可能沒有考慮過?

有什麼選擇可用?

理想情況下,我想將這些轉換保留在擴展類或不同的庫中,以免混淆我們的項目引用。混亂可以住在這個特殊的轉換庫中。

例如,

DAL1.DataTypes我有一類DAL2.DataTypesTable1Data

我有一個類Table1

感謝。

回答

3

您可以使用自動映射器 - 看automapper

AutoMapper使用流利的配置API定義對象對象映射策略。 AutoMapper使用基於約定的匹配算法來匹配源和目標值。

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); 
} 

UPD:最近SO更新這是一個真正的痛苦在IE6使用的代碼片段,如果對不起有任何代碼格式化的問題。

相關問題