【问题标题】:What is the "+<>c__DisplayClassX" type suffix where X is a number?X 是数字的“+<>c__DisplayClassX”类型后缀是什么?
【发布时间】:2011-04-15 10:15:01
【问题描述】:

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

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

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

【问题讨论】:

    标签: .net wpf exception serialization


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-15
      • 2014-08-19
      相关资源
      最近更新 更多