In the ComInterfaceGenerator, we use record types for incremental pipeline values. This made it easy to prototype, and provided value equality without extra code. However, now that the codebase is more stable, we can transition to classes and structs that expose less to the pipeline users and limits constructor visibility.
From https://github.com/dotnet/runtime/pull/101577#discussion_r1580247525
In the ComInterfaceGenerator, we use record types for incremental pipeline values. This made it easy to prototype, and provided value equality without extra code. However, now that the codebase is more stable, we can transition to classes and structs that expose less to the pipeline users and limits constructor visibility.