Я пишу оболочку Active Directory, пытаясь следовать SOLID и другим передовым методам. Интерфейс в настоящее время "IActiveDirectory".
Проблема, с которой я столкнулся сейчас, заключается в том, что реализация ActiveDirectory должна реализовать IDisposable, чтобы избавиться от нескольких ресурсов, которые создаются и удаляются внутри этой оболочки, и я не уверен, как решить эту проблему при попытке закодировать интерфейс и т. д. Я не хочу создавать дырявую абстракцию (т. е. украшать IActiveDirectory с помощью IDisposable.) Я не могу сделать службу гранулярной (т. е. ограничивать создание/удаление ресурсов вызовами методов) из-за производительности базовых зависимостей.
В настоящее время у меня есть фабрика, так что потребители IActiveDirectory могут создавать ее по требованию, но мне нужен чистый и удобный способ, чтобы потребитель сигнализировал, что это делается с ресурсом.
Как я могу предоставить потребителям контракт (то есть интерфейс) без утечки абстракции оболочки ресурса? Должен ли я просто выставить реализацию без интерфейса? Есть ли способ для моего потребителя или контейнера внедрения зависимостей управлять сроком службы этой службы?
IDisposable
есть. Вы не можете абстрагироваться от всего. - person   schedule 01.11.2013Dispose
ничего не делает. Размещение его на интерфейсе не означает, что все реализации нуждаются в удалении (любая реализация, которая не может просто добавитьvoid Dispose() {}
), это означает, что некоторые реализации нуждаются в удалении (что верно). - person   schedule 02.11.2013