我正在尝试验证参数是否为out参数并扩展接口(ICollection).反射api似乎不想给我参数的"真实"类型,只有最后一个"&"的参数不会在IsAssignableFrom语句中正确评估.我写了一些有效的c#代码,但似乎应该有更好的方法来做到这一点.
bool isCachedArg(ParameterInfo pInfo)
{
if (!pInfo.IsOut)
return false;
string typeName = pInfo.ParameterType.FullName;
string nameNoAmpersand = typeName.Substring(0, typeName.Length - 1);
Type realType = Type.GetType(nameNoAmpersand);
if (!typeof(ICollection).IsAssignableFrom(realType))
return false;
return true;
}
Run Code Online (Sandbox Code Playgroud)
有没有办法获得realType而无需从其字符串名称重新加载Type?我还在使用.NET 2.1.
谢谢,兰迪
我想检索一条错误消息,解释 jvm 加载失败的原因。从此处提供的示例中:
http://java.sun.com/docs/books/jni/html/invoke.html
我提取了这个例子:
/* Create the Java VM */
res = JNI_CreateJavaVM(&jvm, (void**)&env, &vm_args);
if (res < 0) {
// retrieve verbose error here?
fprintf(stderr, "Can't create Java VM\n");
exit(1);
}
Run Code Online (Sandbox Code Playgroud)
在我的特定情况下,我在 vm_args 中提供了无效参数,并希望看到我在命令行上得到的信息:“无法识别的选项:-foo=bar”
在进一步测试中,jvm 似乎将我想要的消息放入 stdout 或 stderr。我相信我需要捕获 stdout 和 stderr 才能得到我正在寻找的错误(当然除非有更简单的方法)。我正在用 C++ 编码,所以如果有人可以展示一种将错误捕获到字符串流中的方法,那将是理想的。
谢谢,兰迪