Я пытаюсь написать метод для покрытия данного объекта экземпляром данного типа.Я начал с этого:
private static T TryCast<T>(object o)
{
return (T) o;
}
Заходя, я знаю , что не сработает, но это иллюстрирует концепцию.Теперь у меня начнутся проблемы, когда у меня будут типы, которые не будут приводиться автоматически, например string -> DateTime.Я пытался использовать класс Convert для решения этих случаев, но я просто получаю ошибку времени компиляции вместо ошибки времени выполнения.Следующий код получает ошибку компиляции: «Невозможно привести выражение типа string к типу T»
private static T TryCast<T>(object o)
{
var typeName = typeof (T).FullName;
switch (typeName)
{
case "System.String":
return (T) Convert.ToString(o);
default:
return (T) o;
}
}
Мне также известно о Convert.ChangeType (), но мне интересно, будет лиобрабатывать крайние случаи, которые я иначе обработал бы в вышеупомянутом переключателе, например, указанная строка -> DateTime, для которой я обычно просто использовал бы Convert.ToDateTime.Если кто-нибудь может дать мне работоспособный подход , я могу взять его оттуда.