registrar con castle windsor

18 views
Skip to first unread message

Edgar Ramos

unread,
May 14, 2013, 11:04:15 AM5/14/13
to altnet-...@googlegroups.com
Gente un saludo, tengo el siguiente escenario

Interfaces
public interface IModel<T> : IModelReadOnly<T>
{
}

public interface ITransaccionCrudModel<TEntity> : IModel<TEntity>
{
}

Implementaciones

public class Model <T> : IModel<T>
{
}

public class TransaccionCrudModel<TEntity> : Model<TEntity>, ITransaccionCrudModel<TEntity>
{
}

Model hace uso de su dao, y sirve actualmente a una entidad, en cambio, TransaccionCrudModel si bien sirve a una entidad, internamente depende de un DaoFactory, el cual me trae los daos requeridos para trabajar con transaccion.

En un primer esquema, esto es es sin tener TransaccionCrudModel, registraba mis model de la siguiente manera

container.Register(Component.For(typeof(IModel<>))
                                        .Forward(typeof(IModelReadOnly<>))
                                        .ImplementedBy(typeof(Model<>))
                                        .LifeStyle.Transient);


Con el nuevo esquema, para que me funcione todo, he añadido la siguiente linea al codigo anterior

container.Register(Component.For(typeof(ITransaccionCrudModel<>)).ImplementedBy(typeof(TransaccionCrudModel<>)));

El problema que veo aqui es que, voy a requerir aumentar n lineas, como la anterior por cada Model al que le inyecte un daofactory, lo cual no me parece lo mas conveniente.

Agradezco mucho sus comentarios o sugerencias para hacer este codigo lo mas optimo posible

Saludos
Edgar


--
Saludos
Edgar

Edgar Ramos

unread,
May 14, 2013, 11:06:05 AM5/14/13
to altnet-...@googlegroups.com
se me olvida comentarles que estoy trabajando con castle windsor 2.1.0 y cambiarme a nueva version es un poco complicado en el escenario ya estructurado

Muchas gracias
--
Saludos
Edgar

Cristian Prieto

unread,
May 14, 2013, 8:16:56 PM5/14/13
to altnet-...@googlegroups.com

Cristian Prieto


2013/5/15 Edgar Ramos <eramo...@gmail.com>

--
Has recibido este mensaje porque estás suscrito al grupo "AltNet-Hispano" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a altnet-hispan...@googlegroups.com.
Para publicar una entrada en este grupo, envía un correo electrónico a altnet-...@googlegroups.com.
Visita este grupo en http://groups.google.com/group/altnet-hispano?hl=es.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.
 
 

Edgar Ramos

unread,
May 15, 2013, 9:45:29 AM5/15/13
to altnet-...@googlegroups.com
Gracias Cristian, lo estaba revisando, hasta el momento me ha funcionado con la siguiente instruccion

container.Register(AllTypes.FromAssembly(typeof(Model<>).Assembly)
                                       .BasedOn(typeof(IModel<>))
                                       .WithService.Select((t, baseType) => t.GetInterfaces())  
                                       .Configure(p => p.LifeStyle.Transient));


Saludos
Edgar
--
Saludos
Edgar
Reply all
Reply to author
Forward
0 new messages