我见过一些标有MethodImplOptions.InternalCall
从文档中可以看出,这种方法是“公共语言运行时本身实现的方法”。
我想知道将方法标记为内部通话的用法是什么?
不能在.NET库本身中实现这样的方法吗?或者作为可以使用标准技术调用的本机方法? (例如:Pinvoke)
另一个问题涉及“为什么不实施与CIL指令相同”:What's the point of MethodImplOptions.InternalCall?
它回答了为什么最好不引入新的CIL指令,但没有完全回答我所追求的内容。
此外,是否可以在非CLR代码中创建内部实现? (例如:托管CLR的本机应用程序?)
答案 0 :(得分:1)
正如您在 MethodImplAttribute
中使用的 MethodImplOptions.InternalCall 链接中提到的那样[MethodImpl(MethodImplOptions.InternalCall)]
MethodImpl是所谓的伪属性,这些类型的属性具有特殊处理,并且不作为该类型的元数据的一部分存储,而是用于在元数据表中设置值。具有类似行为的另一个属性是SerializableAttribute。 MethodImplAttribute接收MethodImplOptions作为参数以配置方法实现。 MethodImplOptions.InternalCall通常与与非托管代码关联的代码一起使用。
您可以在此处找到更多信息: