6

Ho un IRepository generico che ha 2 costruttori, uno non ha parametri, l'altro ha il datacontext come parametro. Voglio definire a structuremap a aways in questo caso utilizzare il costruttore senza parametri. Voglio un modo per creare un contructorless senza parametri, altre soluzioni che ho visto, creano un nuovo Datacontext e lo passano al costruttore che ha parametri.Definire costruttore predefinito Structuremap in un repository generico

+0

Questo ti aiuta? http://stackoverflow.com/questions/289512/structuremap-how-to-define-default-constructor-by-code – uvita

+0

Non perché sto usando un repository generico! Devo fare qualcosa del genere: x.SelectConstructor (IRepository ....... –

+0

Questo non ha senso Le interfacce non hanno costruttori –

risposta

4

Per impostazione predefinita, StructureMap utilizzerà il costruttore con il maggior numero di argomenti. Nel tuo caso, dal momento che vuoi utilizzare il costruttore senza parametri, usa DefaultConstructorAttribute:

[DefaultConstructor] 
public void Repository<T>() { } 

public void Repository<T>(DataContext dataContext) { } 
+0

È possibile farlo in un altro modo? Sembrerebbe, senza accesso/desiderio di aggiungere un interesse alla tua classe, non puoi specificare un costruttore predefinito per apri i tipi generici perché non puoi formulare un costruttore ex pression con loro. – Cargowire

+0

È possibile configurare StructureMap anche per chiamare esplicitamente l'altro costruttore. Se non potessi modificare la classe in questione, questo sarebbe l'approccio che prenderei. –

+0

Ma in realtà non è possibile chiamare il costruttore di un generico aperto, ad es. BaseClass ecc. Perché non è possibile compilare un'espressione che non soddisfa tali parametri. – Cargowire