簡體   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