Я недавно стал активным пользователем функции Autofac OwnedInstances. Например, я использую его, чтобы предоставить фабрику для создания единицы работы для моей базы данных, что означает, что мои классы, которые зависят от фабрики UnitOfWork, запрашивают объекты типа:
Func>
Это невероятно полезно - отлично подходит для сохранения IDisposable из моих интерфейсов - но за это приходится платить: поскольку Owned является частью сборки Autofac, я должен ссылаться на Autofac в каждом из моих проектов, которые знают о Owned и помещают «using Autofac.Features.OwnedInstances» в каждый файл кода.
Func имеет большое преимущество, поскольку он встроен в платформу .NET, поэтому я не сомневаюсь, что Func можно использовать в качестве универсальной фабричной оболочки. Но Owned находится в сборке Autofac, и каждый раз, когда я использую его, я создаю жесткую ссылку на Autofac (даже если моя единственная ссылка на Autofac - это тип Owned в аргументе метода интерфейса).
У меня вопрос: это плохо? Будет ли это укусить меня так, как я? м еще не учли? Иногда у меня есть проект, на который ссылаются многие другие проекты, и поэтому, естественно, мне нужно, чтобы его зависимости были как можно ближе к нулю; делаю ли я зло, передавая Func
Возможно, если бы Owned был встроенным типом .NET, вся эта дилемма исчезла бы? (Следует ли мне даже задерживать дыхание, чтобы это произошло?)