考虑以下方法:
public dynamic ConvertIt(dynamic source, Type dest)
{
return Convert.ChangeType(source, dest);
}
如何获得dest的实际原始类型?
我希望有类似的东西:
if (dest is bool)
但是我得到一个设计时警告,类型条件永远不会满足,这很明显因为dest总是Type。
我希望能够获得类型(基元)的枚举,这是dest的属性。
答案 0 :(得分:5)
您可以使用已知类型的typeof
运算符,并将其与dest
类型进行比较:
if (dest == typeof(bool))
(引用相等在这里很好,因为每个类型只有一个Type
对象代表它。)
目前还不清楚你的意思是"得到一个类型(原语)的枚举,一个属性的目标" - 但如果您想检查dest
是否属于众多类型之一,则可以创建List<Type>
或HashSet<Type>
并使用acceptableTypes.Contains(dest)
。
答案 1 :(得分:3)
您不需要获取dest
的类型,而是获取bool
的类型并进行比较:
if(dest == typeof(bool))
您收到警告,因为Type
类不兼容bool
。因此,表达式将始终返回false
。