转换数据类型的统一方法

时间:2013-05-03 22:24:11

标签: c# .net converter typeconverter

.NET知道很多转换数据类型的方法:

  • Convert - 类;
  • 类似(Try)ParseToString等类型的函数;
  • 接口IConvertable;
  • 的实施
  • TypeConverter;
  • 隐式和显式转换运算符;
  • 我错过了另一个吗?

因此,如果要将一种数据类型转换为另一种数据类型,我需要知道这两种类型,并且我需要知道要使用哪种转换方法。如果这两种类型中的一种(或两者)是泛型类型,这就变得非常讨厌。

所以我的问题是:我在.NET中有统一(通用)方式将一种数据类型转换为另一种数据类型,这可能会使用所有其他有限的方法吗?

2 个答案:

答案 0 :(得分:2)

Convert.ChangeType之间转换类型的一种好的通用方法。以下是如何使用它编写通用转换方法的示例:

public static TResult Convert<TResult>(IConvertible source)
{
    return (TResult)System.Convert.ChangeType(source, typeof(TResult));
}

与其他Convert方法一样,它在内部调用IConvertible接口。

这不会使用您的其他转换选项:

  • 我认为最常见的是ToString;为此,您可以添加一项检查以查看TResult是否为string,如果是,(在适当的空检查后),只需在您的输入上调用ToString
  • 使用反射,您可以检查:

如果您对反思有所了解,这些都是相当不言自明的,但我可以详细说明是否有任何困难。

答案 1 :(得分:0)

你暗示那些都是一样的 他们不是
选择合适的

转换类

  

将基本数据类型转换为另一种基本数据类型。

Parse来自字符串

ToString是一个字符串

IConvertible Interface

  

定义转换实现引用值的方法   或者类型为具有等效语言的公共语言运行时类型   值。

TypeConverter Class

  

提供将值类型转换为其他类型的统一方法,   以及访问标准值和子属性。

是的,您需要知道您要转换的类型 您应该知道您要转换的类型。

有了泛型,没有内置。
你最好提供一种方法 但为什么你需要转换泛型?

你似乎暗示不止一种方式是坏事 对于单一的方式,我喜欢Tim S. +1的回答 但这并不意味着我会用它。

从SQL数据库获取数据的方法更多 那是一件坏事?