什么是"+ <> c__DisplayClassX"类型后缀,其中X是数字?

Nés*_* A. 5 .net wpf serialization exception

我有一个WPF应用程序抛出的异常.消息是:

Type 'MyNamespacesPath.AType+<>c__DisplayClass5' in Assembly... is not marked as serializable
Run Code Online (Sandbox Code Playgroud)

问题是该类型无法序列化.但是该类型是自动生成的,可能是匿名方法或表达式树.任何人都知道这些类型的确切来源,知道在哪里找到bug?

Tho*_*que 3

delegate当您编写捕获局部变量的匿名方法(使用语法或 lambda 表达式)时,会生成具有此类名称的类型。这些类型的作用是保存捕获的变量的值

请注意,其他类型的生成类型具有不同的名称:

  • 匿名类型的名称类似于<>f__AnonymousType0<<a>j__TPar, <b>j__TPar>(由 生成new { a = 1, b = "2" })。
  • 迭代器还生成新类型,例如<ZipIterator>d__0<TFirst, TSecond, TResult>(注意尖括号之间的迭代器方法的名称)

据我所知,没有记录生成类型的命名规则,因此您不应在代码中依赖这些观察结果。我只是为了完整性而提及它们。