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

标签 .net wpf exception serialization

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

Type 'MyNamespacesPath.AType+<>c__DisplayClass5' in Assembly... is not marked as serializable

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

最佳答案

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

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

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

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

    关于.net - 什么是 "+<>c__DisplayClassX"类型后缀,其中 X 是数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3764332/

    相关文章:

    c# - 在类级别和方法级别应用 ClaimsPrincipalPermissionAttribute 时出现异常

    exception - 在函数式编程中什么时候抛出异常合适

    c# - 自定义 .NET 框架生成的异常消息?

    c# - 推荐一个用C#读取Excel文件的教程

    .net - ILMerge 实际上是合并程序集,还是只是将所有内容放入一个文件中?

    .net - 什么时候加载程序集?

    c# - 如何多次写入文件文本?

    c# - 在不同的 View 模型之间共享PropertyChanged数据

    c# - WPF ItemsCollection.ItemContainerGenerator 的可能竞争条件

    postgresql - 使用plpgsql捕获警告