Castle Windsor的DictionaryAdapter

时间:2012-07-05 09:28:03

标签: c# .net castle-windsor castle

我正在尝试将其中一个应用程序从Castle Windsor 2.1升级到2.5。

我删除了所有Castle DLL,并添加了从Castle网站下载的2.5版本:

Castle.Core.dll Castle.Windsor.dll

在进行迁移之前,我还有一个关于我的项目的参考:

Castle.Components.DictionaryAdapter.dll

然而,根据KrzysztofKoźmic的帖子here,不再需要这样的引用,因为DictionaryAdapter现在捆绑在Castle.Core.dll中。

删除它后,我在整个地方都会收到错误:

  

错误6类型或命名空间名称“DictionaryComponent”不可能   发现(你错过了使用指令或程序集   引用?)

  

错误64找不到类型或命名空间名称“DictionaryKey”   (您是否缺少using指令或程序集引用?)

  

错误27类型或命名空间名称“DictionaryKeyAttribute”不能   找到(你错过了使用指令或汇编引用吗?)

然后我想我会添加对Castle.Components.DictionaryAdapter.dll的引用,因为CORE可能没有在其中实现上面列出的类型。

做到这一点摆脱了所有的错误,但给了我一个新的:

错误8'd:.NET \ app \ libs \ Castle.Core.dll'和'd:.Net \ app \ libs \ Castle.Components中存在'Castle.Components.DictionaryAdapter.DictionaryAdapterFactory'类型。 DictionaryAdapter.dll'

以下方法实现发生错误:

internal static ISettingService GetServiceFromAdapterFactory(NameValueCollection collection)
{
    var adapter = new DictionaryAdapterFactory();
    return adapter.GetAdapter<ISettingService>(collection);
}

从2.1升级到2.5时有没有人遇到过这样的问题,可以给我一些建议吗?

提前致谢。

1 个答案:

答案 0 :(得分:1)

要在这里回答我自己的问题,这是我在代码中必须更改的内容。

  • 将所有 DictionaryKey 更改为 KeyAttribute
  • 将所有 DictionaryComponent 更改为 ComponentAttribute
  • 使用 Kernel.Register 代替 Kernel.AddComponent

显然删除了所有的2.1 DLL并添加了2.5。您会注意到DictionaryAdapter.dll已被删除,因为它现在捆绑在Castle.Core.dll中

希望将来帮助某人。