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.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage