我继承了一些带有自定义DI容器的代码(需要移动到unity ),它是基于属性的,比如MEF。
[SERVICE]
PUBLIC <interface> myVar { get; set ; }
想知道是否已经有了一个unity扩展,我可以使用它,或者是否有任何帮助来构建一个?
发布于 2011-11-04 01:20:12
目前还不清楚[SERVICE]
应该启用什么行为。所以我猜:
对于不同形式的依赖注入,Unity支持Injection Attributes。您还可以使用Attribute-Driven Policies进行方法拦截。
如果您可以灵活地更改注入的方式:首选模式是使用构造函数注入,而不是属性或服务定位器。它允许你从你的类中删除所有对Unity的引用...这意味着您可以在不更改代码的情况下再次更改容器。参见Service Locator is an Anti-Pattern。
发布于 2011-11-04 04:42:39
如果SERVICEAttribute
将一个属性标记为由容器注入,那么只需搜索替换整个代码库并替换[Dependency
的[SERVICE]
]。
DependencyAttribute是Unity为依赖注入标记属性的方式。
然而,我确实同意ErnieL的观点,即在依赖注入领域,使用属性是一种代码气味。使用该属性以允许将代码移动到Unity,但不要对您编写的任何新代码使用[Dependency]
,并在重构旧代码时将其删除。
https://stackoverflow.com/questions/7996618
复制相似问题