Хотя можно делать то, что вы делаете, вы можете подумать об этом:
Если вы делаете внедрение зависимостей, вы обычно не внедряете примитивные типы.Это включает в себя основные коллекции.Внедрение зависимостей лучше всего работает при внедрении долгоживущих объектов с одноэлементной областью, схожих с сервисами в DDD-говорящих.
Возможно, вы захотите рассмотреть создание типа, чтобы охватить идею, которую этот IDictionary<int, IList<B>>
пытается представить,Для чего используется этот объект?Как это взаимодействует с другими объектами в вашей системе?Ответы на эти вопросы могут привести к сложному типу, возможно, со смешанной функциональностью. Может быть, это FooRepository, и вам нужны только определенные методы полного объекта IDictionary, чтобы вы получили что-то вроде этого:
public class FooRepository<T>
{
private IDictionary<int, IList<T>> m_repository;
FooRepository()
{
m_repository = new Dictionary<int, List<T>>();
}
public Add(int key, IList<T> value)
{
m_repository.Add(key, value);
}
// other public methods to expose
}
Причина, по которой вы могли бы подумать об этом, заключается в том, что все, что использует IDictionary<int, List<T>>
, вероятно, имеет доступ к гораздо большему количеству методов, чем необходимо, и вы хотите следовать хорошим методам инкапсуляции данных, чтобы потребители этого объекта могли получать доступ только к тем вещам, которые онитребуется.