Hola grupo, tengo una pregunta:
Cuando usamos dependency injection normalmente usamos el par "Interface, TipoConcreto" para definir en el contenedor que tipo concreto se tiene que instanciar cuando la interface este presente en un constructor:
Services.RegisterTrasient<IEndPoint, concreteEndPoint>();
Entonces tengo un caso donde un proceso necesita usar una interface de tipo: IEndPoint pero no solo una, digamos que es un proceso que necesita varios endpoints:
constructor (ErrorEndPoint : IEndPoint ,
SuccessEndPoint: IEndPoint ,
TempEndPoint: IEndPoint)
Entonces todos van en el constructor, pero todos son de tipo IEndPoint, sin embargo yo quiero poder inyectar diferentes implementaciones de los endpoints para cada uno y solo tengo un IEndPoint en el contenedor, la solucion que viene en principio es crear interface markers, que no son mas que interfaces vacias para poder tener varias implementaciones del mismo tipo en el contenedor:
interface IErrorEndPoint : IEndPoint{
}
interface ISuccessEndPoint: IEndPoint{
}
interface ITempEndPoint: IEndPoint{
}
Services.RegisterTrasient<IErrorEndPoint, concreteEndPoint1>();
Services.RegisterTrasient<ISuccessEndPoint, concreteEndPoint2>();
Services.RegisterTrasient<ITempEndPoint, concreteEndPoint3>();
constructor (ErrorEndPoint : IErrorEndPoint,
SuccessEndPoint: ISuccessEndPoint,
TempEndPoint: ITempEndPoint)
Ahora, ESTO NO ME HUELE BIEN! siento que estoy haciendo un workarround, alguna sugerencia?
Saludos y happy thanks giving.
Israel.