自定义封送器需要其他成员

自定义封送器分析器已更改为要求所有以元素为中心的封送模式同时满足托管到非托管和非托管到托管的形状。

以前的行为

具有 MarshalMode.ElementIn 的自定义封送器仅需要 ConvertToUnmanaged 方法。 具有 MarshalMode.ElementOut 的自定义封送器仅需要 ConvertToManaged 方法。

新行为

从 .NET 8 开始,对于具有 MarshalMode.ElementIn 但不同时具有 MarshalMode.ElementOutConvertToUnmanaged 方法的自定义封送器,将报告 ConvertToManaged

已引入的版本

.NET 8 RC 1

破坏性变更的类型

此更改可能会影响 源兼容性

更改原因

引入源生成的 COM 后,可以在托管到非托管和非托管到托管方案的元素方案中使用封送器。 此更改更新了分析器,以确保用户定义的封送器具有在所有可能使用封送器的场景中所需的成员。

ConvertToManaged 方法和 ConvertToUnmanaged 方法添加到封送器类型。

受影响的 API