有没有办法创建嵌套的开放泛型类型?

时间:2016-10-20 01:38:31

标签: c# nested-generics open-generics

在C#中,很容易创建一个开放的泛型类型typeof(IEnumerable<>)。有没有办法创建一个包含开放泛型的类型?以下内容不起作用:typeof(IEnumerable<IFoo<>>)

2 个答案:

答案 0 :(得分:3)

获取涉及的两个未绑定泛型类型,然后使用一个作为参数从另一个创建泛型类型:

typeof(IEnumerable<>).MakeGenericType(typeof(IFoo<>))

答案 1 :(得分:1)

没有办法。这些不是通用但未绑定的类型,这些是特殊类型,它们无法实例化。未绑定的泛型类型只能在直接typeof-expression中使用。

当您使用typeof(IEnumerable<IFoo<>>)时,您不是在表达式类型中使用未绑定类型,而是使用IEnumerable<T>表达式。