Skip to content

Autofac 扩展,使用 Attribute 进行服务注册与属性注入

License

Notifications You must be signed in to change notification settings

dotnet-campus/Autofac.Annotation

Repository files navigation

dotnetCampus.Autofac.Annotation

Build NuGet

项目灵感来源于: yuzd/Autofac.Annotation: Autofac extras library for component registration via attributes 用注解来load autofac 摆脱代码或者xml配置和java的spring的注解注入一样的体验

yuzd/Autofac.Annotation 这个项目的功能要丰富更多。

在实际使用时,发现yuzd/Autofac.Annotation有时属性注入会失败。(非必现)没有仔细调查原因,可能是哪里用得不对。 为了避免在实际项目中出现非预期的问题,就实现了一个简单版本的,通过 Attribute 完成自动注册的库。

1 Autofac 扩展

1.1 通过 Atttibute 实现服务的注册

Attribute 作用
ComponentAttribute 标记在 class 上,将 class 作为组件注册到容器中
RepositoryAttribute 与 ComponentAttribute 相同,默认作用域为 SingleInstance
ServiceAttribute 与 ComponentAttribute 相同,默认作用域为 SingleInstance

1.2 通过 AutowiredAttribute 进行属性注入

默认情况下,仅对使用了 ComponentAttribute(Repository,Service)标记的类中,对属性标记 AutowiredAttribute 才有效。

1.3 通过 IComponentDetector 批量注册

IComponentDetector 是作为 ComponentAttribute 的补充,可以批量注册一类组件。

对于已经通过其它方式注册,仅仅是想通过 AutowiredAttribute 进行属性注入的,可以在返回的 ComponentModel 中,将 IsOnlyRegisterProperties 标记为 true(这个是默认值)。

2 Quick Start

Install-Package dotnetCampus.Autofac.Annotation
// autofac 的 RegisterModule
// SetComponentDetector 非必须
builder.RegisterModule(
                new AutofacAnnotationModule(_assemblies)
                    .SetComponentDetector(new AutofacComponentDetector()));

About

Autofac 扩展,使用 Attribute 进行服务注册与属性注入

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Languages