Перегрузка метода, основанная на общих ограничениях?
Могу ли я как-то перегружать методы, которые отличаются только общим типомconstraints?
Это не компилируется:
void Foo<T>(T bar) where T : class
{
}
void Foo<T>(T bar) where T : struct
{
}
Поскольку они являются "открытыми" методы, фактический метод должен быть закрыт / сконструирован / полностью определен, когда на него ссылаются в другом месте кода с конкретно типизированнымT
и тогда было бы понятно, какую перегрузку вызывать.
Очевидное решение не состоит в том, чтобы перегружать их, но мне интересно, почему это не работает в C #?
Дополнительный вопрос: если это просто ограничение компилятора C #, разрешает ли IL такую перегрузку?