2011-05-31 24 views
0

每當新的基於依賴注入的解決方案啓動時,我總是問自己同樣的問題。我通常有一個專用的接口組合件 - 這個接口由每個其他解決方案模塊引用。我需要使用一些小的用戶數據類型,我也用它來存儲那些接口程序集。這似乎是最合乎邏輯的事情,但它總是使接口組裝項目看起來像一個垃圾箱。在實施DI/IoC時存儲次要用戶數據類型的地方

問題是 - 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這裏的問題是它需要我來引用Common.Scheduler,無論我打電話給IScheduler.ScheduleTask(...)。與SearchParameters的問題是它極其浪費界面。想象一下,在同一個程序集下存儲着數百個小型文件。

回答

0

爲什麼在撥打IScheduler.ScheduleTask時需要參考Common.Scheduler?此方法正確使用該接口,因此調用此方法不要求您引用Common.Scheduler
如果您正在使用SimpleTaskComplexTask的其中一個具體類型,則只需引用該程序集。在這種情況下,您需要引用該程序集是正確的。

+0

那麼,我需要創建一個SimpleTask/ComplexTask(ITask實現者)的實例作爲參數傳遞。 – Vitaly 2011-05-31 14:04:08

+0

這個創作不應該只在幾個地方,所以你儘可能使用界面? – 2011-05-31 14:07:11

+0

恕我直言,這是一個完全不同的場景。 SearchParams不會有接口,因爲它只是一個沒有任何邏輯的DTO。 – 2011-05-31 14:16:40

相關問題