有以下定义:
public class Generic<T>
{
public class Nested { }
}鉴于“欧洲反洗钱法”第25.1条规定:
嵌套在泛型类声明或泛型结构声明(§25.2)中的任何类本身就是泛型类声明,因为应该提供包含类型的类型参数来创建构造的类型。
我理解Nested需要类型参数才能被实例化。
我可以用Type获得通用的typeof
var type = typeof(Generic<>.Nested);
// type.FullName: Namespace.Generic`1+Nested是否可以将其用作泛型方法的类型参数,如以下所示?
var tmp = Enumerable.Empty<Generic<>.Nested>();
// Error: Unexpected use of an unbound generic如前所述,从ECMA规范中我了解到,所有类型参数在执行之前都必须满足,但是这里没有创建对象。此外,Nested类不以任何方式使用类型参数:我只想为代码组织目的定义嵌套的类型参数。
发布于 2016-04-14 08:32:36
不,你不能那样做。就像你说的
所有类型参数都必须在实例前满足。
虽然没有实际生成Generic<>.Nested的实例
Empty的语义(所以不知道没有创建Generic<>.Nested实例)IEnumerabe<Generic<>.Nested>实例,它也是一个具有“不满意的类型参数”的类型。发布于 2016-04-14 09:19:50
我认为您的主要目标可能只是通过将父类旁边的子类放在同一个名称空间中来实现。
名称空间实际上应该以您在文章下面的注释中所讨论的方式组织代码。
您应该只将类定义为子类,只有父类才会使用它。
https://stackoverflow.com/questions/36617507
复制相似问题