同じメンバを持ちますが名前が異なる2つの型があります。彼らの間にキャストするための簡単な、あるいは標準的な方法がありますか?あるいは、私は反射で深刻なハッキングをしなければなりませんか?C#で同様の型の間でキャストする
2
A
答えて
7
あなたは限り.NETは懸念しているとして、これらは完全にあるC#4
からの反射(私は助けることができるMiscUtilでPropertyCopy
クラスを持っている)または使用して動的型付けをハッキングんするか持っています別々のタイプ。
9
両方のタイプを表すinterface
を作成できます。どちらのタイプにも対応できるコードで作業する場合は、各タイプにインターフェイスを実装してから、特定のタイプの代わりにインターフェイスを使用します。
1
これは、はるかに完璧からですが、私は、共通のインターフェイスに基づいてオブジェクト間で同じ名前のプロパティをコピーするために、この拡張メソッドを使用し
public static T CopyTo<T>(this T source, T target) where T : class
{
foreach (var propertyInfo in typeof(T).GetProperties(BindingFlags.Instance | BindingFlags.Public))
{
propertyInfo.SetValue(target, propertyInfo.GetValue(source, null), null);
}
return target;
}
使い方が
var internationalCustomer = new InternationalCustomer();
var customer = (Customer)internationalCustomer.CopyTo<ICustomer>(new Customer());
InternationalCustomerのようなものですお客様は両方ともICustomerを実装する必要があります。
関連する問題
- 1. Cでの型キャスト
- 2. XAMLの型間でのキャスト
- 3. 数値型間のキャストのC++ベストプラクティス
- 4. Typescript:別の同様のタイプにキャスト
- 5. C#で型にキャストする方法
- 6. cのパラメータでの動的型キャスト
- 7. キャストとC#での型の指定
- 8. Cポインタ型キャスト
- 9. C - IntsとCharでの型キャスト*
- 10. 標準のCの型キャスト
- 11. C++型キャストの定義
- 12. リストにレスポンスオブジェクトの型をキャストするC#
- 13. OpenCL:GPUでの型キャスト
- 14. 'Common.Date'型のオブジェクトを型 'System.IConvertible'にキャストできませんC#
- 15. Int型からdouble型へのキャストをC#erorで
- 16. キャスト<int>のC#でのメソッドは型キャストではありません
- 17. Microsoft.SharePoint.ClientとMicrosoft.SharePointの型の間のキャスト
- 18. objective-C/CのGetLastErrorと同様の機能ですか?
- 19. 24時間制限のクエリで同様にStackoverflowの5つの質問と同様のクエリですか?
- 20. データ型で型をキャストする
- 21. C/C++での明示的な型キャスト演算子
- 22. 同様の間隔でランダムに点を生成する
- 23. C#列挙型とキャスト
- 24. C++ long型をJNIにキャストするjlong
- 25. 配列のキャストの内容をCの算術型にキャスト
- 26. 基本Objective-Cの型キャストの質問
- 27. Math.FloorとC#の整数型へのキャスト
- 28. CUDAとcuBLASでの型キャスト
- 29. VB .NETでの型キャスト
- 30. 矢印上での型キャスト
おそらく同じ基本クラスから派生する必要がありますか? –
すでにマッパーに反対するオブジェクトはたくさんあります。例えば、[bltoolkit](http://bltoolkit.net/Doc.ObjectToObject.ashx) –
本当にreflexionを避け、 "light"オブジェクトを持っているなら、[implicit](http://msdn.microsoft。 com/ja-jp/library/z5z9kes2%28v = VS.100%29.aspx) – kerrubin