6

Tengo un IRepository genérico que tiene 2 constructores, uno no tiene parámetros, otro tiene el contexto de datos como parámetro. Quiero definir structmap para aways en este caso use el constructor sin parámetros. Quiero una forma de crear un contructor sin parámetros, otras soluciones que he visto, crean un nuevo Datacontext y lo pasan al constructor que tiene parámetros.Definir constructor predeterminado Structuremap en un repositorio genérico

+0

¿Esto le ayuda? http://stackoverflow.com/questions/289512/structuremap-how-to-define-default-constructor-by-code – uvita

+0

¡No porque estoy usando un repositorio genérico! Necesito hacer algo como esto: x.SelectConstructor (IRepository ....... –

+0

Eso no tiene sentido. Las interfaces no tienen constructores. –

Respuesta

4

De forma predeterminada, StructureMap utilizará el constructor con la mayoría de los argumentos. En su caso, dado que desea usar el constructor sin parámetros, use el DefaultConstructorAttribute:

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

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

¿Es posible hacer esto de otra manera? Parece, sin acceso/deseo de agregar un atributo a su clase, no puede especificar un constructor predeterminado para abrir tipos genéricos porque no se puede formular un constructor ex pression con ellos. – Cargowire

+0

También puede configurar StructureMap para llamar al otro constructor explícitamente. Si no pudiera modificar la clase en cuestión, ese es el enfoque que tomaría. –

+0

Pero no se puede llamar al constructor de un genérico abierto, p. Ej. BaseClass etc. porque no puede compilar una expresión que no cumple esos parámetros. – Cargowire

Cuestiones relacionadas