每次启动基于依赖注入的新解决方案时,我都会问自己一个相同的问题。我通常有一个专门用于接口的程序集——每个其他解决方案模块都引用这个程序集。如果我需要使用一些小的用户数据类型,我也会将它们存储在接口程序集中。这似乎是最合乎逻辑的事情,但它总是让惰性面组装项目看起来像一个垃圾箱。
问题是,SearchParams
、SimpleTask
和ComplexTask
最好放在什么地方?请参考下面的例子。
我过去就是这样做的:
通用接口
接口IScheduler{布尔型ScheduleTask(ITask任务);ITask FindTask(SearchParameters搜索);}接口ITask{…}类SearchParameters{…}
Common.Schedur
类调度程序:IScheduler{…}类SimpleTask:ITask{…}类ComplexTask:ITask{…}
SimpleTask
和ComplexTask
的问题是,无论我在哪里调用IScheduler.ScheduleTask(…),都需要引用Common.Scheduler。而SearchParameters
的问题是它浪费了接口。想象一下,在同一个程序集中存储了数百个小类型。
为什么在调用IScheduler.ScheduleTask
时需要引用Common.Scheduler
?此方法正确地使用了接口,因此调用此方法不需要引用Common.Scheduler
仅当使用具体类型SimpleTask
或ComplexTask
之一时,才需要引用该程序集。在这种情况下,您需要引用该程序集是正确的。