繁体   English   中英

统一Java库中C#中的自省

[英]Introspection in C# on java library in unity

我已使用IKVM将Java库转换为.dll以在我的统一应用程序中使用。

我如何在C#中编写此Java行:

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时似乎出现了问题

.NET中运行时的Java类的等效项是System.Type对象。 有两种获取方法:在任何对象实例上调用GetType() (来自System.Object,因此所有内容都支持它)或使用typeof运算符

也许也可以使用原始的类名,但是我希望它需要Type对象。 这将取决于IKVM如何实现Java反射。 我真的不知道

当然,您也可以使用.NET反射来完成整个操作。 我不知道这是否等同于示例行的功能,因为您使用的是一些奇怪的非标准的类似于Java反射的东西,但是看起来您只是在尝试获取a的“默认”实例类...?

// 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();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM