如何通过程序集访问泛型类型来处理它们?
我正在使用托管 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
.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 passingMyClass
as parameter.