在实现DI/IoC时,将次要用户数据类型存储在何处



每次启动基于依赖注入的新解决方案时,我都会问自己一个相同的问题。我通常有一个专门用于接口的程序集——每个其他解决方案模块都引用这个程序集。如果我需要使用一些小的用户数据类型,我也会将它们存储在接口程序集中。这似乎是最合乎逻辑的事情,但它总是让惰性面组装项目看起来像一个垃圾箱。

问题是,SearchParamsSimpleTaskComplexTask最好放在什么地方?请参考下面的例子。

我过去就是这样做的:
通用接口

接口IScheduler{布尔型ScheduleTask(ITask任务);ITask FindTask(SearchParameters搜索);}接口ITask{…}类SearchParameters{…}

Common.Schedur

类调度程序:IScheduler{…}类SimpleTask:ITask{…}类ComplexTask:ITask{…}

SimpleTaskComplexTask的问题是,无论我在哪里调用IScheduler.ScheduleTask(…),都需要引用Common.Scheduler。而SearchParameters的问题是它浪费了接口。想象一下,在同一个程序集中存储了数百个小类型。

为什么在调用IScheduler.ScheduleTask时需要引用Common.Scheduler?此方法正确地使用了接口,因此调用此方法不需要引用Common.Scheduler
仅当使用具体类型SimpleTaskComplexTask之一时,才需要引用该程序集。在这种情况下,您需要引用该程序集是正确的。

最新更新