将字符串转换为基于Type的对象

本文关键字:Type 对象 字符串 转换 | 更新日期: 2023-09-27 18:15:05

Type type1 = Type.GetType("System.Int32");
string test = "test";

请告诉我如何将测试转换为基于type1对象的对象。它应该失败或返回null,因为给定的字符串不能转换为int。

将字符串转换为基于Type的对象

我不太确定我是否理解对了。

如果要安全地将字符串转换为整型,请参阅

int result;
bool wasConverted;
wasConverted = int.TryParse(test,out result)

要了解更多的通用转换,请查看ConvertClass。

例如转换。但是你必须用自己的方式处理异常。

public object SafeConvertChangeType(object value,Type targetType)
      {
      object result ;
      try {
           result = Convert.ChangeType(value, targetType);
      }
      catch (FormatException)
      catch (InvalidCastException) {
           result = null;
      }
return result;
}

你可以调用方法这是:

var result = SafeConvertChangeType("Foo",typeof(int32));

你可能也有一个战利品在这篇文章:测试如果转换。ChangeType将在两个类型之间工作。它指出没有"ConversionCheck"Api。所以我假设你需要异常捕获

您可以使用Convert.ChangeType:

Type type1 = Type.GetType("System.Int32");
string test = "test";
object newObject = Convert.ChangeType(test, type1);