Lavoriamo su un progetto di medie dimensioni (3 sviluppatori in più di 6 mesi) e dobbiamo prendere una decisione successiva: vorremmo avere interfacce separate dall'implementazione concreta. Il primo è quello di memorizzare l'interfaccia in un file separato.Interfacce separate dall'implementazione della classe in progetti separati?
Vorremmo andare oltre e separare ancora di più i dati: ci piacerebbe avere un progetto (CSPROJ) con interfaccia in un file .CS più un altro file .CS con classi di aiuto (come alcune classi pubbliche utilizzate all'interno di questa interfaccia, alcune enumerazioni ecc.). Quindi, ci piacerebbe avere un altro progetto (CSPROJ) con un modello factory, implementazione di un'interfaccia concreta e altre classi "worker".
Qualsiasi classe che desideri creare un oggetto che implementa questa interfaccia deve includere il primo progetto che contiene le interfacce e le classi pubbliche, non l'implementazione stessa.
Questa soluzione ha un grosso svantaggio: moltiplica il numero di assiemi per 2, perché per ogni progetto "normale" si avrebbe un progetto con interace e uno con implementazione.
Cosa raccomanderesti? Pensi che sia una buona idea collocare tutte le interfacce in un progetto separato anziché in un'interfaccia nel proprio progetto?
Tutte le interfacce sono pubbliche e non considero Remoting, WCF e altre interfacce esterne. –