Перегрузка метода, основанная на общих ограничениях?

Могу ли я как-то перегружать методы, которые отличаются только общим типомconstraints?

Это не компилируется:

    void Foo<T>(T bar) where T : class
    {

    }

    void Foo<T>(T bar) where T : struct
    {

    }

Поскольку они являются "открытыми" методы, фактический метод должен быть закрыт / сконструирован / полностью определен, когда на него ссылаются в другом месте кода с конкретно типизированнымTи тогда было бы понятно, какую перегрузку вызывать.

Очевидное решение не состоит в том, чтобы перегружать их, но мне интересно, почему это не работает в C #?

Дополнительный вопрос: если это просто ограничение компилятора C #, разрешает ли IL такую перегрузку?

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

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