使用 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 ...