我需要查明我正在使用的Type
是否为Generic'容器',例如,如果我有List<int>
我需要检查我是否正在使用List (我知道如何使用int
),我该怎么做? (我在想反思)。另一个例子,我有一个名为StructContainer<T>
的类,我需要找到单词(name)'StructContainer',我不太喜欢'T',使用反射得到StructContainer'1
,不愿意做一些字符串拆分等/编辑:只是为了进一步解释,StructContainer<int>
我需要'StructContainer',Tuple<int>
我需要'元组',List<int>
我需要'列表'等等
答案 0 :(得分:4)
您的第一个问题可以通过多种方式实现:
IEnumerable<T>
:yourObject is IEnumerable<int>
。这仅在您知道容器中对象的类型(在这种情况下为int
)StructContainer
更改为List
。至于你的第二个问题,你可以这样做:
var yourObject = new StructContainer<int>();
var yourType = yourObject.GetType();
if(yourType.IsGenericType &&
yourType.GetGenericTypeDefinition() == typeof(StructContainer<>))
// ...
答案 1 :(得分:0)
string type = yourObject.GetType().Name.Split('`')[0];