C#WinFormsプロジェクトを使用して、遅延バインディングを使用して、Amibrokerと呼ばれるプログラムによって提供されるCOM自動化APIに接続しようとしています。これまでのところ、1つのアイテムを除いて、APIのすべてに接続できました。これは、広範なグーグルに基づく「パラメーター化されたプロパティ」であると信じています。
ドキュメントによると、API仕様は次のようになります(フルバージョンはこちら: http: //www.amibroker.com/guide/objects.html):
Property Filter(ByVal nType As Integer, ByVal pszCategory As String) As Long [r/w]
値を更新するJavaScriptスニペットは次のようになります。
AB = new ActiveXObject("Broker.Application");
AA = AB.Analysis;
AA.Filter( 0, "market" ) = 0;
次のC#実行時バインディングコードを使用して、プロパティの値を取得できますが、値を設定する方法を一生理解することはできません。
object[] parameter = new object[2];
parameter[0] = Number;
parameter[1] = Type;
object filters = _analysis.GetType().InvokeMember("Filter", BindingFlags.GetProperty, null, _analysis, parameter);
これまでに試しました:
- BindingFlags.SetProperty、BindingFlags.SetFieldを使用する
- 返されたオブジェクトをPropertyInfoオブジェクトにキャストし、それを使用して値を更新しようとします
- 値を含むオブジェクトをパラメータオブジェクトに追加する
- 最後の努力として他の様々なもの
私が見ることができることから、これは簡単なはずですが、C#での遅延バインディングはせいぜい面倒だと感じています。プロパティは私へのメソッド呼び出しのように見えますが、それが私を失望させています。メソッドに値を割り当てるにはどうすればよいですか?また、遅延バインディングC#コードのプロトタイプはどのようになりますか?
うまくいけば、それで十分に説明できますが、不明な点がないかどうかお気軽にお問い合わせください。助けてくれてありがとう!
ダニエル