我正在开发一个需要使用公共服务定位器的库( http://commonservicelocator.codeplex.com/ )为了不与任何消费者发生冲突,提供通用的IOC支持。显然,我不想在我的项目中直接引用IOC框架,但我不确定如何注释这些部分,以便不同的框架可以找到它们。例如,MEF通常通过查找带有导出注释的类来工作,而Linfu则通过查找带有实现注释的类来工作。这两个注释都是在它们各自的项目中定义的,需要我同时引用它们。
如何避免添加所有这些类和多次注释所有类?它当然不能很好地适应新的IOC框架,因为每个新框架的注释都需要重新构建。
从文档中:
“库不应配置 集装箱 “作为图书馆或框架作者, 明白你不应该 把任何东西放进容器里- 这是打电话的人的工作。允许 要选择的应用程序编写器 不管他们想要什么容器。你需要 记录您需要的服务 已注册,如果您正在使用 服务地点。当前环境 集装箱。”
“库不应配置 集装箱
“作为图书馆或框架作者, 明白你不应该 把任何东西放进容器里- 这是打电话的人的工作。允许 要选择的应用程序编写器 不管他们想要什么容器。你需要 记录您需要的服务 已注册,如果您正在使用 服务地点。当前环境 集装箱。”
所以我认为你不需要导出任何东西,只需要记录下你需要消耗什么来运行。并且可以选择使用serviceLocator.current接口来解析所需的任何依赖项。