Build | NuGet |
---|---|
yuzd/Autofac.Annotation
这个项目的功能要丰富更多。
在实际使用时,发现
yuzd/Autofac.Annotation
有时属性注入会失败。(非必现)没有仔细调查原因,可能是哪里用得不对。 为了避免在实际项目中出现非预期的问题,就实现了一个简单版本的,通过 Attribute 完成自动注册的库。
Attribute | 作用 |
---|---|
ComponentAttribute | 标记在 class 上,将 class 作为组件注册到容器中 |
RepositoryAttribute | 与 ComponentAttribute 相同,默认作用域为 SingleInstance |
ServiceAttribute | 与 ComponentAttribute 相同,默认作用域为 SingleInstance |
默认情况下,仅对使用了 ComponentAttribute
(Repository,Service)标记的类中,对属性标记 AutowiredAttribute
才有效。
IComponentDetector
是作为 ComponentAttribute
的补充,可以批量注册一类组件。
对于已经通过其它方式注册,仅仅是想通过 AutowiredAttribute
进行属性注入的,可以在返回的 ComponentModel
中,将 IsOnlyRegisterProperties
标记为 true
(这个是默认值)。
Install-Package dotnetCampus.Autofac.Annotation
// autofac 的 RegisterModule
// SetComponentDetector 非必须
builder.RegisterModule(
new AutofacAnnotationModule(_assemblies)
.SetComponentDetector(new AutofacComponentDetector()));