リフレクション ベースの遅延バインディング ライブラリを Microsoft Office に実装しようとしています。Office COM オブジェクトのプロパティとメソッドは、次の方法で呼び出されます。
Type type = Type.GetTypeFromProgID("Word.Application");
object comObject = Activator.CreateInstance(type);
type.InvokeMember(<METHOD NAME>, <BINDING FLAGS>, null, comObject, new object[] { <PARAMS>});
Type.GetMethod / GetProperty は COM オブジェクトで適切に動作しないため、InvokeMember が唯一可能な方法です。
InvokeMember を使用してメソッドとプロパティを呼び出すことができますが、次の問題を解決する必要があります。
office-interop ラッパーのメソッド:
Excel.Workbooks wb = excel.Workbooks;
Excel.Workbook firstWb = wb[0];
それぞれ
foreach(Excel.Workbook w in excel.Workbooks)
// doSmth.
リフレクション経由で Excel.Workbooks の this[int index] 演算子を呼び出すにはどうすればよいですか?