gpt4 book ai didi

c# - 如何只获取 Enumerable 类型?

转载 作者:太空狗 更新时间:2023-10-29 23:13:41 26 4
gpt4 key购买 nike

我想按类型分隔 IEnumerable 变量。我的代码是这样的:

if (type is IEnumerable)
{
var listGenericType = type.GetType().GetGenericTypeDefinition().Name;
listGenericType = listGenericType.Substring(0, listGenericType.IndexOf('`'));
if (listGenericType == "List") {
//do something
}

else if (listGenericType == "HashSet") {
//do something
}
}

当我使用 type.GetType().GetGenericTypeDefinition().Name 时,listGenericType 类似于 List`1 HashSet`1 但我希望它像 ListHashSet。因此,我使用 Substring 来处理这个问题!

有没有不用 postProcessing string 类型来处理这个问题的方法?我的意思是像下面的代码:

if (type is IEnumerable)
{
var listGenericType = type.GetType().GetGenericTypeDefinitionWithoutAnyNeedForPostProcessing();
if (listGenericType == "List") {
//do something
}

else if (listGenericType == "HashSet") {
//do something
}
}

最佳答案

您不必将它与字符串进行比较。由于 GetGenericTypeDefinition() 返回一个类型,您所要做的就是使用 typeof 运算符将它与一个类型进行比较,例如:

if (type is IEnumerable)
{
var listGenericType = type.GetType().GetGenericTypeDefinition();

if (listGenericType == typeof(List<>)) {
//do something
}
else if (listGenericType == typeof(HashShet<>)) {
//do something
}
}

正如下面@nopeflow 友善指出的那样,如果您的类型不是通用类型,则 GetGenericTypeDefinition() 将抛出 InvalidOperationException。确保你考虑到这一点。

关于c# - 如何只获取 Enumerable 类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33385222/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com