首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在C#中使用泛型类中嵌套的类作为类型参数

在C#中使用泛型类中嵌套的类作为类型参数
EN

Stack Overflow用户
提问于 2016-04-14 08:24:10
回答 2查看 1.2K关注 0票数 3

有以下定义:

代码语言:javascript
复制
public class Generic<T>
{
    public class Nested { }
}

鉴于“欧洲反洗钱法”第25.1条规定:

嵌套在泛型类声明或泛型结构声明(§25.2)中的任何类本身就是泛型类声明,因为应该提供包含类型的类型参数来创建构造的类型。

我理解Nested需要类型参数才能被实例化。

我可以用Type获得通用的typeof

代码语言:javascript
复制
var type = typeof(Generic<>.Nested); 
// type.FullName: Namespace.Generic`1+Nested

是否可以将其用作泛型方法的类型参数,如以下所示?

代码语言:javascript
复制
var tmp = Enumerable.Empty<Generic<>.Nested>(); 
// Error: Unexpected use of an unbound generic

如前所述,从ECMA规范中我了解到,所有类型参数在执行之前都必须满足,但是这里没有创建对象。此外,Nested类不以任何方式使用类型参数:我只想为代码组织目的定义嵌套的类型参数。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-14 08:32:36

不,你不能那样做。就像你说的

所有类型参数都必须在实例前满足。

虽然没有实际生成Generic<>.Nested的实例

  • 编译器不知道Empty的语义(所以不知道没有创建Generic<>.Nested实例)
  • 主要问题:您确实希望创建一个IEnumerabe<Generic<>.Nested>实例,它也是一个具有“不满意的类型参数”的类型。
票数 3
EN

Stack Overflow用户

发布于 2016-04-14 09:19:50

我认为您的主要目标可能只是通过将父类旁边的子类放在同一个名称空间中来实现。

名称空间实际上应该以您在文章下面的注释中所讨论的方式组织代码。

您应该只将类定义为子类,只有父类才会使用它。

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

https://stackoverflow.com/questions/36617507

复制
相关文章

相似问题

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