異なる名前空間に2つのクラスがあり、castと入力する必要があります。
あるクラスのキャストオブジェクトを別のクラスに入力する方法。どちらのクラスも同じメソッドとプロパティを持っています。
リフレクションは機能しますか?クラスの型キャストの例はどれでも役に立ちます。
あるタイプから別のタイプに直接キャストすることはできません。次のことができます。
たとえば、一方が他方のベースであるなど、何らかの方法で関連していない限り、それらをキャストすることはできません。
マッパーを使用するなど、さまざまな方法でマップを作成できます。AutoMapperはよく知られています。
https://github.com/AutoMapper/AutoMapper
このウィルは、クラスメンバー名に基づいて一方から他方にマップされます
それらのクラスにはいくつのプロパティがありますか?それらは「手書き」のクラスですか?
たぶん、2つのクラスは必要なく、そのうちの1つを削除して、他のクラスをどこでも使用できますか?
たぶん、クラスの1つが他から派生する可能性がありますか?次に、基本クラスに共通のプロパティとメソッドを記述するだけで済みます。
2つの異なるクラスが必要で、どちらも他方から派生していない場合(これは、「通常の」キャスト(参照変換キャスト)が許可されるために1つのmsutが持つ状況です)、いくつかのオプションがあります。
public static explicit operator ClassOne(ClassTwo ct)
あなたは「翻訳」をしたを書くことができます。これにより、標準のキャスト構文(たとえば(ClassOne)variable
)を使用できるようになります。クラスがまったく関連していない場合の別の解決策(パーツフォームマッピング)は、を使用できます。これが危険すぎる場合のイベントですが、考えられるオプションの1つと見なすことができます。dynamic
namepsace A {
public class NotRelatedA() {
public void Run() {}
}
}
namepsace B {
public class NotRelatedB() {
public void Run() {}
}
}
dynamic dyn = new A.NotRelatedA();
dyn.Run(); //Run A
dyn = new B.NotRelatedB();
dyn.Run(); //Run B, without changing and mapping anything
繰り返しますが、これは一種の危険です。安全な静的タイプの世界を離れ、動的で強力な混乱に飛び込むため、使用する場合は注意して使用してください。