在使用反射的时候,有时候要根据不同的类型做不同的操作。其中要做的一件事是枚举.NET的基本类型。由于进行.NET开发,已经对.NET的基本类型较了解,可能会使用下面的代码进行枚举:

Type objectType = obj.GetType();
if(objectType == typeof(string))
{
    // DO sth
}
else if(objectType == typeof(int) || objectType == typeof(int?))
{
    // DO sth
}
else if(objectType == typeof(enum))
{
    // DO sth
}
// more else


这样做有一点不好,有时候要为漏掉某个基本而苦恼。
原来.NET FX中有相应的类型和方法可以做得更好:使用 Convert.GetTypeCode 获取一个值,而这个值是 TypeCode 枚举值中的一个。这样就简单了。

TypeCode code = Convert.GetTypeCode(obj);
switch(code)
{
    case TypeCode.String:
    // DO sth
    break;

    case TypeCode.Int:
    // DO sth
    break;
    // case ...
}

 

这样除了代码看起来优雅外,还可以避免列举不全的问题。

相关文章:

  • 2022-02-04
  • 2022-12-23
  • 2022-12-23
  • 2022-02-08
猜你喜欢
  • 2022-02-07
  • 2022-12-23
  • 2022-01-03
  • 2022-12-23
  • 2021-11-05
  • 2021-09-07
相关资源
相似解决方案