Во-первых, я понимаю причины, по которым интерфейс или абстрактный класс (в терминологии .NET/С#) не могут иметь абстрактные статические методы. Мой вопрос тогда больше сфокусирован на лучшем дизайнерском решении.
Что я хочу - это набор "вспомогательных" классов, у которых есть свои собственные статические методы, так что если я получаю объекты A, B и C от стороннего поставщика, у меня могут быть вспомогательные классы с такими методами, как
AHelper.RetrieveByID(string id); AHelper.RetrieveByName(string name); AHelper.DumpToDatabase();
Поскольку мои классы AHelper, BHelper и CHelper будут в основном иметь одни и те же методы, кажется, имеет смысл перемещать эти методы в интерфейс, из которого эти классы берутся. Однако, чтобы эти методы были статическими, мне не удалось получить общий интерфейс или абстрактный класс для всех из них.
Я всегда мог бы сделать эти методы нестатичными, а затем создать объекты сначала, например
AHelper a = new AHelper(); a.DumpToDatabase();
Однако этот код не кажется мне интуитивным. Каковы ваши предложения? Должен ли я отказаться от использования интерфейса или абстрактного класса в целом (ситуация, в которой я сейчас сейчас), или можно ли это сделать, чтобы выполнить проект, который я ищу?