Tengo una clase genérica y quiero hacer cumplir que las instancias del parámetro de tipo son siempre "cast-able"/convertible desde String. ¿Es posible hacer esto sin, por ejemplo, usar una interfaz?¿Cómo comprobar si existe un molde implícito o explícito?
aplicación posible:
public class MyClass<T> where T : IConvertibleFrom<string>, new()
{
public T DoSomethingWith(string s)
{
// ...
}
}
aplicació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 cual yo preferiría esta implementación "ideal" es principalmente con el fin de no forzar todo el Ts para implementar IConvertibleFrom <> .
¿Qué es tan ideal acerca de una implementación que reacciona a los errores de tiempo de programación con excepciones de tiempo de ejecución? –
si tiene un grupo de tipos que ya están convirtiendo desde cadena y desea usarlos en una nueva clase/método en la forma en que lo describí de manera abstracta, esta sería la forma menos difícil de implementarlo. Sería una buena idea editar todo tipo e implementar la nueva interfaz. –