自定义封送器分析器已更改为要求所有以元素为中心的封送模式同时满足托管到非托管和非托管到托管的形状。
以前的行为
具有 MarshalMode.ElementIn
的自定义封送器仅需要 ConvertToUnmanaged
方法。 具有 MarshalMode.ElementOut
的自定义封送器仅需要 ConvertToManaged
方法。
新行为
从 .NET 8 开始,对于具有 或 MarshalMode.ElementIn
但不同时具有 MarshalMode.ElementOut
和 ConvertToUnmanaged
方法的自定义封送器,将报告 ConvertToManaged
。
已引入的版本
.NET 8 RC 1
破坏性变更的类型
此更改可能会影响 源兼容性。
更改原因
引入源生成的 COM 后,可以在托管到非托管和非托管到托管方案的元素方案中使用封送器。 此更改更新了分析器,以确保用户定义的封送器具有在所有可能使用封送器的场景中所需的成员。
建议的措施
将 ConvertToManaged
方法和 ConvertToUnmanaged
方法添加到封送器类型。