2015-04-15 2 views
1

Я пытаюсь использовать метод из внешней банки в моем проекте C#. Итак, у меня есть Java проектИмпорт .jar в .dll с IKVM и его использование

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; 
    } 
} 

Я импортировал его в библиотеку DLL с IKVM:

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 показывает сообщение об ошибке: «объект» не содержит определение для «CONCAT», а метод расширения «CONCAT» принимающему первый аргумент типа «объект» может быть найден (Вы не нашли с помощью директивой или ссылкой на сборку?)

Похоже, что объект был создан успешно, но метод contat не может быть выполнен. Как следует использовать concat правильно?

ответ

0

Вам просто нужно изменить тип переменной для stringPair (а не объекта):

object obj = new ...

в

externalpackage.srp.stringPair obj = new ...

Смежные вопросы