需求背景
平時的coding過程中,經常性遇到string類型轉換成其他的基本類型,如 int double bool等,那我們正常的方式就是下面的方式進行類型轉換
int.Parse("111");
bool.Parse("true");
那我們有沒有其他方式統一這個轉換方式呢?
TypeDescriptor實現統一轉換
下面我就寫了一個string的擴展方法
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
namespace Common.Extensions
{
public static class StringExtension
{
public static T Convert<T>(this string input)
{
try
{
var converter = TypeDescriptor.GetConverter(typeof(T));
if (converter != null)
{
return (T)converter.ConvertFromString(input);
}
return default(T);
}
catch (Exception)
{
return default(T);
}
}
public static object Convert(this string input, Type type)
{
try
{
var converter = TypeDescriptor.GetConverter(type);
if (converter != null)
{
return converter.ConvertFromString(input);
}
return null;
}
catch (Exception)
{
return null;
}
}
}
}
實現這個方法后,使用其他就會很方便
"111".Convert<double>();
"True".Convert<bool>();