2010-12-30 10 views
1

こんにちは皆さん カタログマネージャーで働いています。同じ属性(型、番号、..)で異なる名前を持つ2つのクラスをキャストする方法

iは2クラスがあります

まず1:XMLファイル 第二のXsd.exeでは発電機から得た:WebサービスプロキシクラスからGOR

THES 2つのクラスは、唯一の同じ(同じattributs)です事はそれらが2貴様チームによってdevlopedされていることである: 例:

public partial class CatalogPackageAMSApp_Data { 

    private string appField; 

    private byte nameField; 

    private string valueField; 
} 

public partial class AppData { 

    private string appField; 

    private string nameField; 

    private string valueField; 
} 

がどのように私は、キャスト影響を与えることができ、お互い...これらの2クラス。

敬具

任意の更なる説明

答えて

7

これらはどちらも部分クラスです。それぞれに適切なプロパティを持つ同じインターフェイスを接続するだけで、どちらもインターフェイスタイプにキャストできます。

相互に関係がないため、それらの間にキャストすることはできません。基本クラスまたはインタフェースのいずれかに共通性がなければなりません。

0

用接続可I'am彼らはまったく同じであれば、あなたが他を継承するものを変更することはできません何らかの理由はありますか?その後、型間のキャストは簡単です。両方とも自動生成されるので、あまり頻繁に自動生成されないクラスを変更します。

+0

私はこれらの2つのアプローチを試みます。 – Yagami

2

基本的には同じクラスではなく、CatalogPackageAMSApp_DataのインスタンスはAppDataのインスタンスではなく、その逆もありません。おそらく変換演算子を実装し、-

行う可能性は、2つの間の変換を行うメソッド/コンストラクタを記述しています。個人的には、変換を実行しているときにメソッドのアプローチがより明白になるので、メソッドのアプローチを好むでしょう。

あなたは本当にの両方のクラスを持っていますか?実際に2つのクラスが必要な場合は、どちらも合成を使用して、実際のデータを含む共通の3番目のクラスのインスタンスを含むことができますか?

0

これがあなたの状況に当てはまるかどうかはわかりませんが、Webサービスプロキシジェネレータ(WCFを使用している場合はsvcutil.exe、それ以外の場合はwsdl.exe)は生成時に既存のタイプを再利用できるWebサービスプロキシプロキシにその共有のタイプを生成する方法について

http://blogs.msdn.com/b/lifenglu/archive/2007/05/09/type-sharing-in-wcf-service-reference.aspx

その他のリンク:

svcutil.exe redundant proxy classes

http://msdn.microsoft.com/en-us/library/aa347733.aspx

は、.NET 2を使用している場合。0:

wsdl.exe /sharetypes

http://msdn.microsoft.com/en-us/library/7h3ystb6%28v=vs.80%29.aspx

0

私は2つの間の共通のインタフェースが正しい解決策になると思います。これがオプションでない場合は、Automapper(http://automapper.codeplex.com/)を使用してマッピングを処理できます。

関連する問題