首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何判断类型是否已由收益率返回生成?如何创建该类的实例?

如何判断类型是否已由收益率返回生成?如何创建该类的实例?
EN

Stack Overflow用户
提问于 2015-02-12 03:43:58
回答 1查看 176关注 0票数 1
  1. 我在Assembly上进行反思,有一些类型是由yield return生成的,是否有可靠的方法将它们过滤掉?
  2. Type生成的yield return没有默认的构造函数。它是一个class,而不是一个值类型。如何创建这个类的实例?

生成的类型名如下所示:SomeNamespace.RootMode+<GetMouseArrow>d__1,其中RootMode是类名,GetMouseArrow是其中包含yield-return的函数。

用例:序列化正在运行的应用程序的完整状态,包括yield-return语句的状态

更新:

  1. yield return生成的类型有一个公共构造函数,该构造函数以int作为参数。这是状态变量,用于确定IEnumerator在函数中的位置。
  2. 生成的类是privatesealed,它们实现了一组IEnumerator*/IEnumerable*接口。
  3. 生成的类将[CompilerGenerated]属性设置为它。
EN

回答 1

Stack Overflow用户

发布于 2015-02-13 00:50:09

[CompilerGenerated]最有可能是你想要的。它不仅用于“迭代器方法”(您所描述的特性的名称),而且如果您希望筛选出类型,您可能希望筛选出所有编译器生成的类型(也包括为匿名方法和async方法生成的类型)。

至于实例化这类的实例,您可以使用反射,但当然您必须标识要传递的参数并使用适当的构造函数重载。如果没有默认的构造函数,通常的序列化技术就无法工作;您必须自己实现一些东西才能显式地处理这个问题。即在序列化时从类实例中获取适当的值,然后将其传递给构造函数…。当然,要完全恢复类的状态,您需要序列化所有私有字段,并在反序列化时再次还原这些字段,所有这些都是通过反射实现的。

我希望实现这一目标的价值对你来说非常高,因为成本肯定会很高。:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28468895

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档