自動生成されたオブジェクトの大規模なコレクションがあります。それらはすべて異なる、関連のないクラスですが、すべてのオブジェクトはいくつかの基本的なプロパティ (名前、ID など) を共有しています。私はこれらのオブジェクトの生成を制御していないため、残念ながらインターフェイスを実装するという理想的なアプローチを取ることはできません。これらのオブジェクトの任意の 1 つを渡し、これらの共通プロパティを使用して何かを行うメソッドを作成したいと思います。
一般的な考え方は次のようになります。
someObj a = new someObj();
a.name = "sara";
diffObj b = new diffObj();
b.name = "joe";
string phrase = string.Format("I am with {0} and {1}",
getName(a), getName(b));
private string getName(object anyObjWithName)
{
return anyObjWithName.name;
}
当然これは機能しませんが。
ジェネリック メソッドが答えを保持している可能性があると思いましたが、現在の型でそれを呼び出すことができる唯一の方法は を使用genericMethod.Invoke
することであり、メソッドで渡されたオブジェクトのプロパティを解決できないという同じ問題が依然としてあります。これは、実行時にのみ既知の型引数を持つジェネリック メソッドの呼び出しや、指定された Type オブジェクトでジェネリック メソッドを呼び出す方法とは異なります。オブジェクトのプロパティではなく、型または型のプロパティのみがメソッドで使用されます。
これが (非常に) エラーを起こしやすいことは承知していますが、遭遇したすべてのオブジェクトが共通のプロパティを操作することを保証できます。