C# 中递归泛型类型的问题

2023-12-31

我有一些 C# 代码,可以在 mono 和 Microsoft 的 .net 编译器下编译良好,但只能在 mono 上运行。 错误消息是(我添加的换行符)

Unhandled Exception: System.TypeLoadException:
Could not load type 'Hasse.Groups.Heavy.Product.PowerGroup`1'
from assembly 'Hasse, Version=1.0.x.y, Culture=neutral, PublicKeyToken=null'
because it has recursive generic definition.

该类型实际上有一个递归通用定义,所以我的问题是:为什么它可以与 mono 一起使用? [代码运行并产生预期结果]

完整的源代码在这里:https://github.com/miniBill/Hasse https://github.com/miniBill/Hasse

仍然崩溃的精简代码如下:

public class Group<T> : IWrappableGroup<WrapperGroup<T>> {}

public class WrapperElement<T> {}

public interface IWrappableGroup<U> {}

public class WrapperGroup<T> : Group<WrapperElement<T>> {}

class MainClass {
    public static void Main(string[] args){
        var ng = new Group<object>();
    }
}

这是它在单声道上工作的证据:http://ideone.com/ZvA3I http://ideone.com/ZvA3I


这是一个known https://connect.microsoft.com/VisualStudio/feedback/details/679421/generic-defintion-causes-system-typeloadexception问题。它可能会被报告为编译器错误。

http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-335.pdf http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-335.pdf(第 129 页)

至于在 Mono 中工作,就规范而言,Mono 工作有几个地方“被破坏”。

(递归 lambda https://stackoverflow.com/questions/1079164/c-recursive-functions-with-lambdas/1079609#1079609是另一个在 Mono 中工作但不应该工作的例子)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# 中递归泛型类型的问题 的相关文章

随机推荐

  • 交易延长时段

    什么是 扩展会话反模式 延长 或长 会话 或每个会话的会话数 是一个可能在事务持续时间之外存在的会话 与事务范围内的会话相反 或每个请求的会话数 这不一定是反模式 这是一种实现方式长时间的谈话 即与数据库的对话跨越多个事务 这只是anoth
  • 目前进行并行下载最舒适、最可靠的跨平台 Perl 模块是什么?

    我将不得不通过简单地在 URL 上发布并获取 XML 作为回报来下载许多数据集 我可以通过一次执行多个请求来加快这一速度 但问题是 它需要在 Windows 和 Linux 上运行 所以线程和叉子都出局了 因为这纯粹是 IO 绑定的 所以我
  • 如何在 BroadcastReceiver 中添加 Snackbars?

    快捷栏通过在屏幕底部显示简短消息来提供有关操作的轻量级反馈 快捷栏可以包含一个操作 Android 还提供了一个 toast 主要用于系统消息传递 Toast 与 Snackbar 类似 但不包含操作 也不能滑出屏幕 我的问题 import
  • “auto it = unordered_map.find(key)”的推导类型?

    随着 C 11 的出现 我们有 unordered map cbegin cend 来专门返回 const iterator 的值 所以表达式 auto it unordered map cbegin 中 it 的推导类型是const it
  • 宏执行 fgets 剥离换行符

    给出以下两个要使用的语句fgets并去掉换行符 puts Enter the name fgets temp name 40 stdin temp name strcspn temp name n 0 下面的宏足以代替这个吗 define
  • 在mysql中计算5分钟间隔的平均值

    我有一张桌子log有柱子id myValue myCategory and myTimestamp 假设表是这样填充的 ID MYVALUE MYCATEGORY MYTIMESTAMP 1 10 1 2010 11 1 10 00 00
  • 如何获取所有终端节点 - r 中的权重和响应预测“ctree”

    这是我可以用来列出所有终端节点的权重的方法 但是如何添加一些代码来获取响应预测以及每个终端节点 ID 的权重 说我希望我的输出看起来像这样 以下是我迄今为止获得的重量 nodes airct unique where airct 谢谢 二叉
  • PHP 缓存 - 保存在数据库中还是创建文件更快?

    我目前正在缓存动态生成的 PHP 页面 方法是将它们保存到带有到期时间字段的数据库中 如果再次请求该页面 程序会检查是否有未过期的缓存版本的页面可供使用 并且仅在找不到页面时才重新生成该页面 这很有效 但是将缓存的页面保存为文件而不是保存到
  • ng test --code-coverage 不打印覆盖率详细信息

    当我使用运行测试时ng test code coverage我得到的代码覆盖率为未知 不确定可能出了什么问题 感谢这里的任何帮助 gt ng test code coverage 10 building modules 1 1 module
  • 在单页 Clojure Web 应用程序中使用 Friend 进行身份验证和授权

    我正在尝试将好友身份验证和授权集成到 Clojure Compojure 单页 Web 应用程序中 我有一个由 Angular 控制器支持的登录表单 该控制器使用 AJAX 针对 Web 应用程序验证用户名和密码 并获取经过身份验证的用户记
  • 如何将值从 ui-gmap-windows InfoWindow/Marker 传递到 ui-sref?

    我正在尝试使用 angular google maps 模块在 Google 地图上的 InfoWindow 内创建链接ui gmap windows 在我的 HTML 模板中 我有
  • Java逻辑运算符(&&、||)短路机制

    当我阅读一位同事的 Java 代码时 我偶然发现了一大堆 if else 语句 在这些声明中 有几 and 运算符在没有任何括号帮助的情况下互相争斗 我将这些陈述简化为 if true true false return true else
  • ASP.NET WebAPI 基本身份验证始终因 401/未经授权而失败

    尝试使用基本身份验证保护我的 ASP NET Web API 2 但总是以错误结束 401 Unauthorized Authorization has been denied for this request 下面是我的控制器和 ajax
  • 具有多个实体框架模型的单个连接字符串?

    在工作中 我们目前有一个非常大的 Web 应用程序 它连接到一个庞大的数据库 我们使用实体框架已经有一段时间了 为了让事情变得更容易 我们将数据库划分为许多实体模型 这对我们来说效果很好 但我们遇到了一个问题 由于连接字符串的元数据部分 每
  • 在 JavaScript 中创建 Set 的方法?

    在 Eloquent JavaScript 第 4 章中 通过创建对象并将值存储为属性名称 分配任意值 例如 true 作为属性值来创建一组值 要检查该值是否已包含在集合中 in使用运算符 var set if Tom in set set
  • 获取编辑文本字段的值

    我正在学习如何创建 UI 元素 我创建了一些 EditText 输入字段 单击按钮时 我想捕获输入到该输入字段中的内容
  • 德尔福。如何禁用 TFileOpenDialog 和 TOpenDialog 的 Vcl 主题

    如何禁用 TFileOpenDialog 和 TOpenDialog 的 Vcl 主题 I try procedure TForm1 FormCreate Sender TObject var chosenDirectory String
  • 如何填充我的 WTForm 变量?

    我正在启用可以编辑实体的功能 我想用数据存储中的变量填充表单 我该怎么做 我的代码未填充表单 if self request get id id int self request get id ad Ad get db Key from p
  • Unix 屏幕实用程序错误:找不到“xterm-256color”的 termcap 条目

    我通过 Mac 上的 ssh 连接在 NetBSD 系统上工作 我想使用screen实用程序 以便我可以启动进程并在终端连接中断后返回它们 当我打字时screen我收到错误消息 Cannot find termcap entry for x
  • C# 中递归泛型类型的问题

    我有一些 C 代码 可以在 mono 和 Microsoft 的 net 编译器下编译良好 但只能在 mono 上运行 错误消息是 我添加的换行符 Unhandled Exception System TypeLoadException C