在C#中访问非泛型类型

舍尔德222888

假设我有一个类型的实体IList<MyClass>,我想映射到一个类型列表,IList<MyMappedClass>同时保持相同的基础集合类型。

我的意思是,如果该实例恰好是类型List<MyClass>应该映射到List<MyMappedClass>ObservableCollection<MyClass>ObservableCollection<MyMappedClass>

到目前为止,我能找到如下所示的列表的通用类型:

Type listType = myList.GetType(); //myList type: List<T> or ObservableCollection<T>
Type listItemType = listType.GetGenericArguments()[0];

我知道我可以这样做:

Type myListType = typeof(List<>).MakeGenericType(listItemType );

我不能这样做:

Type myListType = myList.GetType().MakeGenericType(listItemType );

因为它已经是通用的。我正在寻找以下内容:

Type myListType = myList.GetType().GotNonGenericType().MakeGenericType(listItemType );

GotNonGenericType()我要寻找的功能的占位符在哪里

隆隆

使用Type.GetGenericTypeDefinition()方法。它将返回类型的通用定义,例如List<>from List<Whatever>然后,您可以使用Type.MakeGenericType(params Type[] typeArguments)方法要使用的通用参数创建类型

var list    = new List<int>();
var type    = myList.GetType();                        // ~ typeof(List<int>)
var generic = type.GetGenericTypeDefinition();         // ~ typeof(List<>)
var newType = generic.MakeGenericType(typeof(string)); // ~ typeof(List<string>)

变量newType包含您要实现的目标。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C#中泛型类型的缺点

来自分类Dev

C#中的泛型类型

来自分类Dev

C#中的条件泛型类型构造函数?

来自分类Dev

C#集合类型约束泛型

来自分类Dev

C#泛型并使用类型化方法中的非泛型版本

来自分类Dev

声明C#泛型类型方法

来自分类Dev

返回C#中作为集合的泛型类型

来自分类Dev

C#中的泛型和继承类型

来自分类Dev

在C#中检查T泛型类型具有属性S(泛型)

来自分类Dev

在C#中循环泛型类型

来自分类Dev

comman的C#泛型类型推断

来自分类Dev

C#中的递归泛型类型参数

来自分类Dev

C#中的泛型类型转换

来自分类Dev

C#中的双重泛型类型

来自分类Dev

可比类型的C#泛型

来自分类Dev

转换泛型类型C#

来自分类Dev

在c#中遍历泛型类型列表

来自分类Dev

在C#中的函数中访问泛型类型的属性

来自分类Dev

C ++:泛型类中的非泛型方法?

来自分类Dev

C#派生泛型类型参数

来自分类Dev

比较C#中2个泛型类型的对象

来自分类Dev

在C#中访问内部泛型的成员

来自分类Dev

在C#中强制转换为任何类型的泛型

来自分类Dev

从C#泛型类型继承到非泛型类型时,如何降低冗长性?

来自分类Dev

C#泛型类型中的多态性

来自分类Dev

在 C# 中安全地转换泛型类型

来自分类Dev

c#获取泛型类中泛型类型参数的名称

来自分类Dev

C# 泛型对象不能添加到该泛型类型的列表中

来自分类Dev

如何根据 C# 中的 T 类型将泛型类型返回为精确类型