Как проверить, существует ли явное или явное приведение?

У меня есть универсальный класс, и я хочу, чтобы экземпляры параметра типа всегда были «приводимыми» / конвертируемыми из String. Возможно ли это сделать, например, без использования интерфейса?

Возможная реализация:

public class MyClass<T> where T : IConvertibleFrom<string>, new()
{
    public T DoSomethingWith(string s)
    {
        // ...
    }
}

Идеальная реализация:

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();
        }
        // ...
    }
}

Причина, по которой я предпочел бы эту «идеальную» реализацию, главным образом состоит в том, чтобы не заставлять все Ts реализовывать IConvertibleFrom <>.

Ответы на вопрос(3)

Ваш ответ на вопрос