我需要使用 IKVM 从 C# 运行 JAR 文件。JAR 包含一个类,其构造函数将枚举作为其参数之一。我面临的问题是,当我尝试使用 IKVM 在 C# 中创建此类的实例时,会引发 IllegalArgumentException。
Java枚举:
public class EventType{
public static final int General;
public static final int Other;
public static int wrap(int v);
}
Java 类:
public class A{
private EventType eType;
public A(EventType e){
eType = e;
}
}
C#用法:
/* loader is the URLClassLoader for the JAR files */
java.lang.Class eArg = java.lang.Class.forName("A", true, loader);
/* Instantiate with the underlying value of EventType.General */
object obj = eArg.getConstructor(EventType).newInstance(0);
eArg 由 forName(..) 方法正确加载。但是,eArg 类的实例化会引发 IllegalArgumentException。除了 exception.TargetSite.CustomAttributes 指定该方法未实现外,异常中没有任何消息。我也尝试将构造函数参数作为 java.lang.Field 对象传递,但即使这样也给出了相同的异常。
有人对我可能做错的事情有任何建议吗?