I have a cached repository that implements the same interface as the real repository. Ie
public class CachedLocationRepository: ILocationRepository public square LocationRepository: ILocationRepository
I how both registered do with Autofac
and a certain Tell which service to use?
That is, some components are used in real use, using some cached versions
public class UseRealImpl:. IUseRealImpl {public UseRealImpl (ILocationRepository locationRepository) {}} public class UseCachedImpl: IUseCachedImpl {public UseCachedImpl (ILocationRepository cachedLocationRepository) {}}
you can use the critters serve to:
for example:
Kantenrbilder builder = new Kantenrbilder (); Builder.RegisterType & lt; CachedLocationRepository & gt; () As & lt; ILocationRepository & gt; () .Keyed & LT; ILocationRepository & gt; (RepositoryType.Cached); Builder. Registration Type & lt; Location repository & gt; (). Like & lt; ILocationRepository & gt; () .kid & lt; ILocationRepository & gt; (Repository type, real);
Then can register UseCachedImpl
using a parameter:
builder.RegisterType & LT; UseCachedImpl & gt; () As & lt; UseCachedImpl & gt; () .WithParameter ((pi, c) = & gt; pi.ParameterType == typeof (ILocationRepository), (pi, c) = & gt; c.ResolveKeyed & LT; ILocationRepository & gt; (RepositoryType.Cached));
or WithKeyAttribute
public class UseCachedImpl {public UseCachedImpl ([WithKey (RepositoryType.Cached)] ILocationRepository cachedLocationRepository) {} }
or a module
which will automatically add the parameter to the condition of a situation, for example if the service applies some interfaces.
No comments:
Post a Comment