Skip to content

Equality of record with private constructor from another assembly gives MethodAccessException #17773

@ntwilson

Description

@ntwilson

We have a codebase with a record with a private constructor. Code in another assembly will equate instances of the record. If both assemblies are compiled with .net 8.0.3, it will work fine. If both assemblies are compiled with 8.0.4, then you will get a runtime exception

System.MethodAccessException : Attempt by method '<caller>' to access method '<record>.Equals(<record>, System.Collections.IEqualityComparer)' failed.

Repro here.
You can see the successful run for 8.0.303 and the failed run for 8.0.401 here

Known workarounds

  • Use .net 8.0.3
  • Make the constructor public

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    Projects

    Status

    New

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions