具有以下定义:
public class Generic<T>
{
public class Nested { }
}
鉴于ECMA参考§25.1指出:
嵌套在通用类声明或通用struct声明(第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
该类不以任何方式使用类型参数:我只是想将其嵌套定义用于代码组织。
不,你不能那样做。如你所说
实例化之前必须满足所有类型参数
尽管Generic<>.Nested
实际上没有生成任何实例
Empty
(因此不知道不Generic<>.Nested
创建的实例)IEnumerabe<Generic<>.Nested>
,这将是一个类型“不满意类型参数”,也本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句