Проверьте, будет ли 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;
  }

Ответы на вопрос(4)

Ваш ответ на вопрос