2010-12-10 12 views
2

データアクセスレイヤを、現在使用されているものよりも新しい、サポートされていて生成されたDALに移行しています。c#関連のないオブジェクト間の型変換

このように、技術的に異なるものの、データの損失なしに容易に転送/相互変換できるデータの集合を表す多くの異なる目的があります。

このタイプのタイプ変換を実行するには、最も柔軟性があり、最も広く使用されているか、または最も望ましい方法などがありますか?

IConvertibleを実装する部分クラスのセットを書くことを検討しています。 また、変換を実行するSystem.ComponentModel.TypeConverterの作成も検討しました。 私が考えていない可能性のある他のオプションはありますか?

どのようなオプションがありますか?

理想的には、これらのコンバージョンを拡張クラスまたは別のライブラリに保存して、プロジェクト参照を乱雑にしないようにしたいと考えています。混乱は、この1つの特別な変換ライブラリに住むことができます。例えば

DAL1.DataTypes

私はクラスにTable1

感謝を持ってDAL2.DataTypesにクラスにTable1Data

を持っています。

答えて

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でコードスニペットを使用するには、本当の痛みのアップデート。

関連する問題