如何通过程序集访问泛型类型来处理它们?

发布于 2024-11-27 06:56:02 字数 584 浏览 0 评论 0原文

我正在使用托管 CLR 来访问 .NET 程序集。该程序集包含的泛型类型如下:

MyGenericClass<MyClass>  // C# notation

其中 spAssembly 是我托管和加载的程序集,我需要通过字符串 (bstrClassName) 获取此类型。

spAssembly->GetType_2(bstrClassName, &spType);  // C++-Access via hosted Assembly

所以现在我需要知道如何格式化类名字符串。对于常规课程,我使用类似的内容

MyNamespace.MySubNamespace.MyClass  // Full adressing for the query.

,我想我必须这样解决它:

MyNamespace.MyGenericClass<MyNamespace.MySubNamespace.MyClass>

但这不起作用。有什么想法吗?也许语法错误?

I'm working with a hosted CLR to access a .NET-Assembly. This assembly contains generic types as:

MyGenericClass<MyClass>  // C# notation

Where spAssembly is my hosted and loaded assembly, I need to get this type via string (bstrClassName).

spAssembly->GetType_2(bstrClassName, &spType);  // C++-Access via hosted Assembly

So now I need to know how to format the classname-string. For regular classes i use something like

MyNamespace.MySubNamespace.MyClass  // Full adressing for the query.

I guess I have to address it like this:

MyNamespace.MyGenericClass<MyNamespace.MySubNamespace.MyClass>

But this doesn't work. Any idea? Maybe a wrong syntax?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

小…红帽 2024-12-04 06:56:02

.Net 中的泛型与 C++ 模板的工作方式不同。您必须首先获取泛型类型,然后从中生成具体类型。因此,您首先必须获取 MyGenericClass 并使用 MakeGenericType 传递 MyClass 作为参数。

Generics in .Net work different than C++ templates. You have to get the generic type first and then generate a concrete type from it. So you first have to get MyGenericClass and use MakeGenericType passing MyClass as parameter.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文