我如何获得类型的类型?

时间:2015-01-29 10:54:20

标签: c#

考虑以下方法:

public dynamic ConvertIt(dynamic source, Type dest)
      {
         return Convert.ChangeType(source, dest);
      }

如何获得dest的实际原始类型?

我希望有类似的东西:

if (dest is bool)

但是我得到一个设计时警告,类型条件永远不会满足,这很明显因为dest总是Type。

我希望能够获得类型(基元)的枚举,这是dest的属性。

2 个答案:

答案 0 :(得分:5)

您可以使用已知类型的typeof运算符,并将其与dest类型进行比较:

if (dest == typeof(bool))

(引用相等在这里很好,因为每个类型只有一个Type对象代表它。)

目前还不清楚你的意思是&#34;得到一个类型(原语)的枚举,一个属性的目标&#34; - 但如果您想检查dest是否属于众多类型之一,则可以创建List<Type>HashSet<Type>并使用acceptableTypes.Contains(dest)

答案 1 :(得分:3)

您不需要获取dest的类型,而是获取bool的类型并进行比较:

if(dest == typeof(bool))

您收到警告,因为Type类不兼容bool。因此,表达式将始终返回false