小编ran*_*909的帖子

.NET反射 - 如何从ParameterInfo中获取"真实"类型

我正在尝试验证参数是否为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.

谢谢,兰迪

.net c# reflection

19
推荐指数
2
解决办法
1万
查看次数

无法通过 JNI 加载 JVM 时,如何收到错误消息?

我想检索一条错误消息,解释 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++ 编码,所以如果有人可以展示一种将错误捕获到字符串流中的方法,那将是理想的。

谢谢,兰迪

c++ java java-native-interface jvm jvm-arguments

3
推荐指数
1
解决办法
3208
查看次数

标签 统计

.net ×1

c# ×1

c++ ×1

java ×1

java-native-interface ×1

jvm ×1

jvm-arguments ×1

reflection ×1