C# 使用autofac时,两种装饰图案的区别是什么?
以上两种注册有什么区别C# 使用autofac时,两种装饰图案的区别是什么?,c#,dependency-injection,autofac,C#,Dependency Injection,Autofac,以上两种注册有什么区别 builder.RegisterDecorator<IHeaderMappingRepository>( (c, inner) => new CachedHeaderMappingRepository(inner), fromKey: "headerMappingRepository"); builder.RegisterType<SqlHeaderMappingRepository>() .Named<IHe
builder.RegisterDecorator<IHeaderMappingRepository>(
(c, inner) => new CachedHeaderMappingRepository(inner),
fromKey: "headerMappingRepository");
builder.RegisterType<SqlHeaderMappingRepository>()
.Named<IHeaderMappingRepository>("headerMappingRepository");
builder.RegisterDecorator(
(c,内部)=>新的缓存标头映射(内部),
fromKey:“headermappingpositional”);
builder.RegisterType()
.命名为(“校长职位”);
及
builder.Register(c=>newcachedHeaderMappingPropository(
c、 解析())
.As();
builder.RegisterType().AsSelf();
这两个代码示例非常相似
唯一的区别是第一个使用命名解析,而第二个使用显式解析。对于第二个代码示例,如果要使用另一个iHeaderMappingPropository
实现,则必须更改适配器注册,而另一方面,必须更改命名注册
从功能上讲,以下两种注册是等效的
builder.RegisterDecorator<IHeaderMappingRepository>(
(c, inner) => new CachedHeaderMappingRepository(inner),
fromKey: "headerMappingRepository")
.As<IHeaderMappingRepository>();
builder.RegisterType<SqlHeaderMappingRepository>()
.Named<IHeaderMappingRepository>("headerMappingRepository");
builder.Register(c => new CachedHeaderMappingRepository(
c.ResolveNamed<IHeaderMappingRepository>("headerMappingRepository")))
.As<IHeaderMappingRepository>();
builder.RegisterType<SqlHeaderMappingRepository>()
.Named<IHeaderMappingRepository>("headerMappingRepository"));
builder.RegisterDecorator(
(c,内部)=>新的缓存标头映射(内部),
fromKey:“headermappingpositionary”)
.As();
builder.RegisterType()
.命名为(“校长职位”);
builder.Register(c=>newcachedHeaderMappingPostory(
c、 (名称为(“校长职位”))
.As();
builder.RegisterType()
。名为(“校长职位”);
这两个代码示例非常相似
唯一的区别是第一个使用命名解析,而第二个使用显式解析。对于第二个代码示例,如果要使用另一个iHeaderMappingPropository
实现,则必须更改适配器注册,而另一方面,必须更改命名注册
从功能上讲,以下两种注册是等效的
builder.RegisterDecorator<IHeaderMappingRepository>(
(c, inner) => new CachedHeaderMappingRepository(inner),
fromKey: "headerMappingRepository")
.As<IHeaderMappingRepository>();
builder.RegisterType<SqlHeaderMappingRepository>()
.Named<IHeaderMappingRepository>("headerMappingRepository");
builder.Register(c => new CachedHeaderMappingRepository(
c.ResolveNamed<IHeaderMappingRepository>("headerMappingRepository")))
.As<IHeaderMappingRepository>();
builder.RegisterType<SqlHeaderMappingRepository>()
.Named<IHeaderMappingRepository>("headerMappingRepository"));
builder.RegisterDecorator(
(c,内部)=>新的缓存标头映射(内部),
fromKey:“headermappingpositionary”)
.As();
builder.RegisterType()
.命名为(“校长职位”);
builder.Register(c=>newcachedHeaderMappingPostory(
c、 (名称为(“校长职位”))
.As();
builder.RegisterType()
。名为(“校长职位”);