¿Cómo comprobar si existe un lanzamiento implícito o explícito?
Tengo una clase genérica y quiero exigir que las instancias del parámetro type siempre sean "convertibles" / convertibles desde String. ¿Es posible hacer esto sin usar, por ejemplo, una interfaz?
Posible implementación:
public class MyClass<T> where T : IConvertibleFrom<string>, new()
{
public T DoSomethingWith(string s)
{
// ...
}
}
Implementación ideal:
public class MyClass<T>
{
public T DoSomethingWith(string s)
{
// CanBeConvertedFrom would return true if explicit or implicit cast exists
if(!typeof(T).CanBeConvertedFrom(typeof(String))
{
throw new Exception();
}
// ...
}
}
La razón por la que preferiría esta implementación "ideal" es principalmente para no forzar a todos los Ts a implementar IConvertibleFrom <>.