Обобщения в .net, такие как методы наследования и расширения, позволяют уменьшить дублирование кода. Позвольте мне объяснить с помощью рефакторинга.
Если все классы с общим предком имеют общий метод, поместите общий метод в общего предка классов (наследование).
Если у некоторых классов есть общий метод, который использует публичный контракт для достижения какого-либо результата, превратите общий метод в метод расширения этого публичного контракта.
Если некоторые несколько методов или классов имеют один и тот же код, который отличается только типами, с которыми выполняются действия (особенно если детали типа не относятся к работе метода), соберите эти методы или классы в общий тип. 1007 *