2015-10-13 1 views
0

Я использовал IKVM для преобразования библиотеки java в DLL для использования в моем единственном приложении.Introspection в C# на java-библиотеке в единстве

Как я пишу эту Java строку в C#:

ProjectController pc = Lookup.getDefault().lookup(ProjectController.class); 


org.gephi.project.api.ProjectController pc = org.openide.util.Lookup.getDefault().lookup(org.gephi.project.api.ProjectController.class); 

Самоанализ не похоже на работу. Кажется, существует проблема, когда я обращаюсь к ProjectController.class

ответ

0

Эквивалент класса Java во время выполнения в .NET является объектом System.Type. Есть два способа получить один: вызов GetType() на любой экземпляр объекта (поступает из System.Object, поэтому все его поддерживает) или используйте the typeof operator.

может также просто использовать имя класса raw, но я ожидаю, что он захочет объект Type. Это будет зависеть от того, как IKVM реализует отражение Java; Я действительно не знаю.

Конечно, вы могли бы просто сделать все это, используя отражение .NET. Я не знаю, если это эквивалентно тому, что делают ваши строки, потому что вы используете какую-то странную нестандартную вещь, похожую на Java, но похоже, что вы просто пытаетесь получить экземпляр «по умолчанию» класса ...?

// I haven't tested this, but it may work: 
ProjectController pc = Lookup.getDefault().lookup(typeof(ProjectController)); 
// You could also just try it without the ".class" part (since "class" is reserved in C#): 
ProjectController pc = Lookup.getDefault().lookup(ProjectController); 
// Or, if you want the .NET reflection "proper" way to do what I *think* you're attempting: 
ProjectController pc = typeof(ProjectController).GetContructor(Type.EmptyTypes).Invoke(null); 
// Of course, that's just the same thing as this simple line, so I probably misunderstood: 
ProjectController pc = new ProjectController(); 

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

  • Нет связанных вопросов^_^