我試圖使用C#WinForms項目來使用後期綁定連接到由名爲Amibroker的程序提供的COM自動化API。到目前爲止,我已經能夠連接到API中的所有內容,除了一個項目,我相信這是一個基於大量谷歌搜索的「參數化屬性」。C#參數化屬性的後期綁定
這裏的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
- 使用它
- 加入包含參數對象的值的額外對象
- 作爲最後努力的各種其他事情
從我所看到的情況來看,這應該是直接的,但我發現C#中的後期綁定最多是很麻煩的。該物業看起來像一個方法打電話給我,這是什麼把我扔了。如何爲一個方法賦值,以及用於後期綁定C#代碼的原型是什麼樣子的?
希望這可以很好地解釋它,但隨時問我是否有任何不清楚的地方。預先感謝任何幫助!
Daniel
@optim:您應該顯示對SetProperty的調用,因爲它很可能是使用該調用的變體。 – casperOne 2010-05-10 20:14:04