Найдено результатов: 1

Статические методы в интерфейсе / абстрактном классе

Во-первых, я понимаю причины, по которым интерфейс или абстрактный класс (в терминологии .NET/C#) не может иметь абстрактных статических методов. Мой вопрос тогда больше сосредоточен на лучшем дизайнерском решении.

Мне нужен набор классов "helper", каждый из которых имеет свои собственные статические методы, так что если я получу объекты A, B и C от стороннего поставщика, у меня могут быть вспомогательные классы с такими методами, как

AHelper.RetrieveByID(string id);
AHelper.RetrieveByName(string name);
AHelper.DumpToDatabase();

Поскольку мои классы AHelper, BHelper и CHelper в основном будут иметь одни и те же методы, то, по-видимому, имеет смысл переместить эти методы в интерфейс, из которого эти классы затем выводятся. Однако желание, чтобы эти методы были статическими, не позволяет мне иметь универсальный интерфейс или абстрактный класс, из которого все они будут производными.

Я всегда могу сделать эти методы нестатическими, а затем сначала создать экземпляр объектов, таких как

AHelper a = new AHelper();
a.DumpToDatabase();

Однако этот код не кажется мне таким интуитивным. Какие у вас есть предложения? Следует ли мне вообще отказаться от использования интерфейса или абстрактного класса (ситуация, в которой я сейчас нахожусь), или это может быть переработано для выполнения дизайна, который я ищу?

.net   abstract-class   static-methods   interface-design    

477   10   08:20, 10th August, 2020