将_Assembly转换为VARIANT

时间:2019-06-12 23:05:43

标签: c++ clr

我有一个CLR托管应用程序,试图使其支持WPF。

我尝试将字段的值设置为_Assembly,但是问题是我必须传递类型为VARIANT的变量。

这是我要转换为C ++的C#代码:

Assembly assembly = Assembly.Load(data);
...
field.SetValue(null, assembly); // I'm attempting to do that in C++

这是我所做的:

_AssemblyPtr pAssembly = NULL;

...

hr = AppDomain->Load_3(sa, &pAssembly);

...

CComVariant obj;
BindingFlags bFlags = (BindingFlags)(BindingFlags_SetField | BindingFlags_NonPublic | BindingFlags_Static);
hr = fieldInfo->SetValue(obj, CComVariant(pAssembly), bFlags, NULL, NULL);

它在fieldInfo->SetValue处失败,并且在应该为VARIANT类型的第二个参数处更准确。错误:hr = E_INVALIDARG One or more arguments are invalid.

如果将第二个参数设置为CComVariant(NULL),它不会失败,但是我需要将_Assembly放在此处。

有什么办法可以解决这个问题吗?

0 个答案:

没有答案