Я пытаюсь использовать позднюю привязку для подключения к API автоматизации COM, предоставляемому программой Amibroker, с использованием проекта C # WinForms. До сих пор я был в состоянии соединиться со всем в API, кроме одного элемента, который я считаю «параметризованным свойством», основанным на обширном поиске в Google.
Вот как выглядит спецификация 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 # с поздним связыванием?
Надеюсь, это объясняет это достаточно хорошо, но не стесняйтесь спрашивать, оставил ли я что-то неясное. Заранее спасибо за любую помощь!
Daniel