Wie überprüfe ich, ob eine implizite oder explizite Besetzung vorliegt?
Ich habe eine generische Klasse und möchte erzwingen, dass Instanzen des Parameters type immer aus String "umsetzbar" / konvertierbar sind. Ist dies möglich, ohne beispielsweise eine Schnittstelle zu verwenden?
Mögliche Implementierung:
public class MyClass<T> where T : IConvertibleFrom<string>, new()
{
public T DoSomethingWith(string s)
{
// ...
}
}
Ideale Umsetzung:
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();
}
// ...
}
}
Der Grund, warum ich diese "ideale" Implementierung vorziehen würde, ist hauptsächlich, um nicht alle Ts zu zwingen, IConvertibleFrom <> zu implementieren.