Почему вы сделали это публичным полем? Похоже, что это в основном зависимость, как и любая другая: вы хотите что-то, что даст вам OtherClass
, когда вы дадите ему некоторые другие значения. Почему бы просто не сделать его параметром конструктора, как другие зависимости (или, тем не менее, вы делаете оставшуюся часть внедрения зависимостей)?
Вы всегда можете обеспечить перегрузку конструктора без этого параметра, который при желании делегирует более длинный. Вот как я обычно предоставляю реализации зависимостей по умолчанию.
Другими словами: как это логически отличается от (скажем) интерфейса IAuthenticator
, который при предоставлении имени пользователя и пароля вернет UserProfile
? Вы используете делегат в качестве ярлыка, чтобы не объявлять интерфейс, но это всего лишь подробный IMO. Вы можете обнаружить, что со временем вы на самом деле хотите добавить больше умов в «обеспечение» - например, кэширование.