5

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

  • Convert-班级;
  • 类型内部的函数,例如(Try)ParseandToString等;
  • 接口的实现IConvertable
  • TypeConverter; _
  • 隐式和显式转换运算符;
  • 我错过了另一个吗?

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

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

4

2 回答 2

2

在类型之间进行转换的一种很好的通用方法是使用Convert.ChangeType. 这是一个如何使用它来编写通用转换方法的示例:

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

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

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

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

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

于 2013-05-03T22:58:59.887 回答
0

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

转换类

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

解析来自字符串

ToString 是一个到字符串

IConvertible 接口

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

类型转换器类

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

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

使用泛型没有内置的。
充其量您提供一种方法。
但是为什么需要转换泛型呢?

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

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

于 2013-05-04T00:08:17.750 回答