根据Type将字符串转换为对象

时间:2014-07-28 07:06:25

标签: c#

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

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

这用于验证目的。

2 个答案:

答案 0 :(得分:2)

我不太确定我是否理解你。

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

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

有关更通用的转换,请查看ConvertClass。

对于示例Convert.ChangeType,您必须按照自己的方式处理异常。

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));

你可能还有post: Test if Convert.ChangeType will work between two types的战利品。它指出没有" ConversionCheck" API。所以我假设你需要异常捕获

答案 1 :(得分:1)

您可以使用Convert.ChangeType

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