Проверьте, будет ли Convert.ChangeType работать между двумя типами
Это продолжение кэтот вопрос о преобразовании значений с отражением. Преобразование объекта определенного типа в другой тип может быть сделано следующим образом:
object convertedValue = Convert.ChangeType(value, targetType);
Учитывая два экземпляра типа (скажем, FromType и ToType), есть ли способ проверить, будет ли преобразование выполнено успешно?
Например. Могу ли я написать метод расширения следующим образом:
public static class TypeExtensions
{
public static bool CanChangeType(this Type fromType, Type toType)
{
// what to put here?
}
}
РЕДАКТИРОВАТЬ: Это то, что у меня есть сейчас. Уродливо, но я непока не вижу другого пути ...
bool CanChangeType(Type sourceType, Type targetType)
{
try
{
var instanceOfSourceType = Activator.CreateInstance(sourceType);
Convert.ChangeType(instanceOfSourceType, targetType);
return true; // OK, it can be converted
}
catch (Exception ex)
{
return false;
}