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

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

旧行为

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

新行为

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

引入的版本

.NET 8 RC 1

中断性变更的类型

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

更改原因

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

ConvertToManagedConvertToUnmanaged 方法添加到封送器类型。

受影响的 API