添加行爲,我使用的字典適配器作爲這個博客帖子描述:應用程序設置 - 在運行時
http://kozmic.net/2013/11/21/on-strongly-typed-application-settings-with-castle-dictionaryadapter/
用於獲取應用程序設置的依賴關係。定義
我有2個屬性:
AppSettingsFromConfigAttribute - for holding a keyprefix
AppSettingsBehavior : KeyPrefixAttribute, IDictionaryPropertyGetter, IPropertyDescriptorInitializer
這是AppSettingsAttribute的翻版屬性類在博客文章。
這是註冊:
Configure(component => component.UsingFactoryMethod(
() =>
{
var attrib = (AppSettingsFromConfigAttribute)Attribute.GetCustomAttribute(component.Implementation, typeof(AppSettingsFromConfigAttribute));
var prop = new PropertyDescriptor();
prop.AddBehavior(new AppSettingsBehavior(attrib.KeyPrefix));
return configFactory.GetAdapter(component.Implementation, new NameValueCollectionAdapter(ConfigurationManager.AppSettings), prop);
})));
所以我用我的自定義屬性,以避免依賴於整個Castle.Core我的代碼庫,而是試圖在運行時通過註冊加入相同的行爲。這是工作,keyprefix部分 - 但不是抓取部分。這隻會在第一次使用時失效,而不是在施工中。
如果我在界面上靜態使用AppSettingsBehavior,它可以正常工作,讀取並在構建時失敗。那麼我在向字典適配器添加行爲時會出錯?