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
risposta
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) { }
È 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
È possibile configurare StructureMap anche per chiamare esplicitamente l'altro costruttore. Se non potessi modificare la classe in questione, questo sarebbe l'approccio che prenderei. –
Ma in realtà non è possibile chiamare il costruttore di un generico aperto, ad es. BaseClass
Questo ti aiuta? http://stackoverflow.com/questions/289512/structuremap-how-to-define-default-constructor-by-code – uvita
Non perché sto usando un repository generico! Devo fare qualcosa del genere: x.SelectConstructor (IRepository ....... –
Questo non ha senso Le interfacce non hanno costruttori –