使用IKVM将.jar导入.dll并使用它

时间:2015-04-15 15:11:52

标签: java c# dll jar ikvm

我试图在我的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();
        }
    }
}

Visual Studio显示错误:' object'不包含' concat'的定义没有延伸方法' concat'接受类型'对象'的第一个参数。可以找到(你错过了使用指令或程序集引用吗?)

看起来对象已成功创建,但是contat方法可能无法执行。我该如何正确使用concat?

1 个答案:

答案 0 :(得分:0)

您只需要将变量的类型更改为stringPair(而不是对象):

object obj = new ...

externalpackage.srp.stringPair obj = new ...