Pregunta

Estoy trabajando con StructureMap para mis necesidades COI.

Para hacer las cosas gratamente comprobable, estoy pasando casos IContainer alrededor siempre que sea posible, por lo general como parámetros del constructor. Para su conveniencia, me gustaría ser capaz de caer de nuevo a usar ObjectFactory para un constructor sin parámetros.

La forma más sencilla (pensé) para hacer esto sería simplemente obtener el IContainer las envolturas de clase ObjectFactory y pasar a que el otro constructor. Por desgracia, no puedo encontrar en cualquier lugar de este ejemplo se expone públicamente.

La pregunta es:

¿Hay una manera de conseguir la IContainer dentro ObjectFactory para que pueda manejarlo como simplemente como un ejemplo proporcionado por el usuario?

Alternativamente, hay una manera de duplicar la configuración de la ObjectFactory en una nueva instancia Container?

Ejemplo:

Me gustaría ser capaz de hacer lo siguiente:

public class MyClass
{
    public MyClass()
    {
        Container = ... // The ObjectFactory container instance.
    }

    public MyClass(IContainer container)
    {
        Container = container;
    }

    public IContainer Container { get; private set; }
}
¿Fue útil?

Solución

ObjectFactory expone una propiedad de contenedores que le da la IContainer que busca.

Cada vez que necesita un IContainer (que no debe ser a menudo) siempre se puede tomar una dependencia en su ctor clase.

public class INeedAContainer
{
    private readonly IContainer _container;

    public INeedAContainer(IContainer container)
    {
        _container = container;
    }

    // do stuff
}

No creo que hay una manera de clonar un IContainer. Hay un método container.GetNestedContainer () que le permite mantener los transitorios de la misma durante la vida útil del contenedor anidado. contenedores anidados se utilizan a menudo dentro de un "uso" declaración y son muy útiles para controlar el estado de cosas como los límites de transacción de base de datos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top