Ответ 1
Я не верю, что есть стандартная передовая практика, но я обычно делаю одну из двух вещей:
- Для небольших проектов я просто создаю папку "Расширения" и добавлю туда различные классы расширения.
- Для более крупных решений у меня будет отдельный проект с именем вроде ProjectName.Extensions, и в рамках этого проекта у меня будет структура папок, которая отражает пространства имен классов, которые я расширяю. Например:
ProjectName.Extensions/System/StringExtensions.cs
ProjectName.Extensions/System.Web/HttpContextExtensions.cs
ProjectName.Extensions/System.Xml/XmlWriterExtensions.cs
И так далее...
Независимо от того, какой подход я беру, в обоих случаях я назову класс ClassNameExtensions.cs
(например, StringExtensions.cs, ListExtensions.cs и т.д.).