gpt4 book ai didi

c# - 通过 IKVM 在 C# 中用于 OIM 的 Java interface.class

转载 作者:行者123 更新时间:2023-11-30 11:27:02 24 4
gpt4 key购买 nike

我使用 IKVM 将 Oracle 的 OIMClient 库转换为 dll。不想用java,想用.NET,但是没有OIM for .NET的API。

如果有人使用过 OIM,那么您要做的就是创建 OIMClient 对象,然后创建一个 UserManger 对象,该对象用于查找、修改、创建用户。

这是 java 代码(已经过测试并且可以工作):

UserManager umgr = null;
umgr = oimClient.getService(UserManager.class);

如果不知道,这是getService方法:

public virtual object getService(Java.Lang.Class serviceClass);

在 .net 中,我找不到使用 interface.class 的方法。- C# 中的 UserManager 对象不存在 .class。- 如果我尝试将其转换为我得到的 Java 类,“无法从‘oracle.iam.identity.usermgmt.api.UserManager’转换为‘java.lang.Class’”

另一个注意事项:我想知道 IKVM 是否没有正确转换某些东西,或者我可能只是迷路了:)

所以,我的问题是:如何在 C# 中执行 java 命令 Interface.class?

最佳答案

正如 HighCore 在他的评论中所建议的那样,'typeof(UserManager)' 就是您想要的。如

umgr = (UserManager)oimClient.getService(typeof(UserManager));

任何需要 Java 类的方法都可以提供 .NET 类型。您可以通过查看 java.lang.Class 的元数据并注意到它提供了对 SystemType 的隐式转换来了解这一点。

[Serializable]
[Signature("T:Ljava/lang/Object;>Ljava/lang/Object;Ljava/io/Serializable;Ljava/lang/reflect/GenericDeclaration;Ljava/lang/reflect/Type;Ljava/lang/reflect/AnnotatedElement;")]
public sealed class Class : Object, Serializable.__Interface, GenericDeclaration, Type, AnnotatedElement, ISerializable
{
// <SNIP>
public static implicit operator Class(global::System.Type type);
}

关于c# - 通过 IKVM 在 C# 中用于 OIM 的 Java interface.class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19527533/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com