У меня есть этот код, который я пытаюсь переписать в c # из скрипта VBS.
VB имеет функцию массива.
Таким образом, строка кода VB выглядит следующим образом (На самом деле это вызов LDAP):
dGrp.Put "ShowInAddressBook",
Array ("val", "val")
Я бы подумал, что эквивалент c # будет:
dGrp.GetType().InvokeMember("Put",
InvokeMemberFlags,
null, dGrp, new object[] { "ShowInAddressBook", addressBookvalues.Split(',') });
Но это не работает.
Я также не могу вызывать метод PUT несколько раз, потому что он перезаписывает предыдущие значения. Он ожидает всех ценностей.
Скрипт работает, но c # выдает это:
Необработанное исключение:
System.Reflection.TargetInvocationException:
Исключение было брошено
цель вызова. --->
System.Runtime.InteropServices.
COMException (0x80004005): не указано
ошибка (исключение из HRESULT:
0x80004005 (E_FAIL))
Любая помощь будет хорошей, спасибо!
РЕДАКТИРОВАТЬ: Извините, что не упомянул явно решение должно оставаться на основе COM. Так что использование альтернатив управляемого кода не вариант (в данном случае).
Обязательные флаги:
private static BindingFlags setCOMBindings()
{
return BindingFlags.DeclaredOnly |
BindingFlags.Public |
BindingFlags.NonPublic |
BindingFlags.Instance |
BindingFlags.InvokeMethod;
}