使用 IKVM 将 .jar 导入 .dll 并使用它
Importing .jar to .dll with IKVM and using it
我正在尝试在我的 C# 项目中使用来自外部 jar 的方法。
所以,我有一个 java 项目
package externalpackage.srp;
public class stringPair {
private String a;
private String b;
public stringPair(String a, String b) {
this.a = a;
this.b = b;
}
public String concat() {
return this.a + this.b;
}
}
我用 IKVM 将它导入到 dll 中:
ikvmc test.jar
然后我在参考文献中添加了test.dll。
现在我正尝试在我的 C# 项目中使用它。
using System;
using System.Reflection;
using System.Reflection.Emit;
namespace HelloWorld
{
class Hello
{
static void Main()
{
string a = "aaa";
string b = "bbb";
java.lang.Class clazz = typeof(externalpackage.srp.stringPair);
java.lang.Thread.currentThread().setContextClassLoader(clazz.getClassLoader());
object obj = new externalpackage.srp.stringPair(a, b);
Console.WriteLine(obj.concat());
Console.ReadKey();
}
}
}
And Visual Studio 显示错误:'object' 不包含 'concat' 的定义并且没有扩展方法 'concat' 接受类型 'object' 的第一个参数可以找到(您是否缺少 using 指令或程序集引用?)
看起来对象创建成功了,但是contat方法为什么不能执行。我应该如何正确使用concat?
您只需将变量的类型更改为 stringPair(而不是对象):
object obj = new ...
至
externalpackage.srp.stringPair obj = new ...
我正在尝试在我的 C# 项目中使用来自外部 jar 的方法。 所以,我有一个 java 项目
package externalpackage.srp;
public class stringPair {
private String a;
private String b;
public stringPair(String a, String b) {
this.a = a;
this.b = b;
}
public String concat() {
return this.a + this.b;
}
}
我用 IKVM 将它导入到 dll 中:
ikvmc test.jar
然后我在参考文献中添加了test.dll。 现在我正尝试在我的 C# 项目中使用它。
using System;
using System.Reflection;
using System.Reflection.Emit;
namespace HelloWorld
{
class Hello
{
static void Main()
{
string a = "aaa";
string b = "bbb";
java.lang.Class clazz = typeof(externalpackage.srp.stringPair);
java.lang.Thread.currentThread().setContextClassLoader(clazz.getClassLoader());
object obj = new externalpackage.srp.stringPair(a, b);
Console.WriteLine(obj.concat());
Console.ReadKey();
}
}
}
And Visual Studio 显示错误:'object' 不包含 'concat' 的定义并且没有扩展方法 'concat' 接受类型 'object' 的第一个参数可以找到(您是否缺少 using 指令或程序集引用?)
看起来对象创建成功了,但是contat方法为什么不能执行。我应该如何正确使用concat?
您只需将变量的类型更改为 stringPair(而不是对象):
object obj = new ...
至
externalpackage.srp.stringPair obj = new ...