我有这段代码我试图从vbs脚本重写到c#。将vb6重写为c的问题#
VB有一个数组函数。
这样的代码VB线看起来像这样(在现实中,它是一个LDAP调用):
dGrp.Put “ShowInAddressBook”, 阵列( “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;
}
如果你正在使用它的LDAP,你为什么不看看System.DirectoryServices命名空间?我假设你正在对AD条目进行更改。 – 2011-06-10 15:53:05
你作为BindingFlags传入了什么? – 2011-06-10 16:12:22