在实施DI / IoC时,在哪里存储次要用户数据类型

时间:2011-05-31 13:51:56

标签: c# .net design-patterns dependency-injection

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

问题是 - SearchParamsSimpleTaskComplexTask的最佳位置是什么?请参考下面的示例。

这就是我用来做的事情:
Common.Interfaces

interface IScheduler
{
    Boolean ScheduleTask(ITask task);
    ITask FindTask(SearchParameters search);
}

interface ITask { ... }

class SearchParameters { ... }

Common.Scheduler

class Scheduler : IScheduler { ... }

class SimpleTask : ITask { ... }

class ComplexTask : ITask { ... }

此处SimpleTaskComplexTask的问题是,无论我在哪里调用IScheduler.ScheduleTask(...),都需要我引用Common.Scheduler。而SearchParameters的问题在于它可以很好地浪费接口。想象一下,在同一个组件下存储了数百种小类型。

1 个答案:

答案 0 :(得分:0)

为什么在致电Common.Scheduler时需要引用IScheduler.ScheduleTask?此方法正确使用该接口,因此调用此方法不需要您引用Common.Scheduler 如果您正在使用其中一种具体类型SimpleTaskComplexTask,则只需引用该程序集。在这种情况下,您需要引用该程序集是正确的。