Я работаю над общей функцией С#. Когда ошибка, если общий тип может быть доступен для нового, верните new T(), в противном случае верните default(T).
Код выглядит следующим образом:
private T Func<T>()
{
    try
    {
        // try to do something...
    }
    catch (Exception exception)
    {
        if (T is new-able) // <---------- How to do this?
        {
            return new T();
        }
        else
        {
            return default(T);
        }
    }
}
Я знаю, что для <использования > new T() требуется where T : new(). Этот вопрос заключается в том, как судить об этом во время выполнения?
