【发布时间】:2011-04-29 17:24:58
【问题描述】:
我使用它在程序集之间传递本机指针。不幸的是,强类型在这种情况下消失了。或者至少,我还没有弄清楚如何获得对 C++/CLI 方法的跨程序集访问,该方法返回指向本机 UDT 的指针。所以假设我是对的,这里需要IntPtr 或void*,我应该使用哪个?
【问题讨论】:
我使用它在程序集之间传递本机指针。不幸的是,强类型在这种情况下消失了。或者至少,我还没有弄清楚如何获得对 C++/CLI 方法的跨程序集访问,该方法返回指向本机 UDT 的指针。所以假设我是对的,这里需要IntPtr 或void*,我应该使用哪个?
【问题讨论】:
总是首选CLS-compliant 路由,在本例中为IntPtr。并非所有 .NET 语言都知道 void* 是什么,但都知道 IntPtr 是什么。
关于本机 UDT 的跨汇编使用,请参阅 #pragma make_public。
【讨论】:
T* 的方法/属性。同样,不能从某些语言调用任何采用或返回除System::Byte 之外的无符号整数类型的方法/属性。是否关心这些语言取决于您。
InternalsVisibleTo attribute 授予逻辑程序集级别friendship。具体看这篇文章:Friend Assemblies (C++)