亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

多次注冊相同的接口 - Autofac

多次注冊相同的接口 - Autofac

C#
慕田峪4524236 2022-12-31 10:53:13
我正在嘗試注冊一個具有不同配置的接口,如下所示:private static ContainerBuilder RegisterAzureStorage(this ContainerBuilder containerBuilder, IAzureStorageOptions azureStorageOptions)    {        containerBuilder.Register(c =>                new AzureStorageKeyValuePersistenceService(                    new AzureStorageKeyValuePersistenceConfig(                        azureStorageOptions.DctAzureBlobConnectionString,                        azureStorageOptions.DctAzureBlobContainerName)))            .As<IStreamableKeyValuePersistenceService>()            .Keyed<IStreamableKeyValuePersistenceService>(PersistenceStorageKeys.DctAzureStorage)            .SingleInstance();        containerBuilder.Register(c =>                new AzureStorageKeyValuePersistenceService(                    new AzureStorageKeyValuePersistenceConfig(                        azureStorageOptions.NcsAzureBlobConnectionString,                        azureStorageOptions.NcsAzureBlobContainerName)))            .As<IStreamableKeyValuePersistenceService>()            .Keyed<IStreamableKeyValuePersistenceService>(PersistenceStorageKeys.NcsAzureStorage)            .SingleInstance();        return containerBuilder;    }然后在我的構造函數中:public ReportingController(        [KeyFilter(PersistenceStorageKeys.DctAzureStorage)] IStreamableKeyValuePersistenceService dctStorage,        [KeyFilter(PersistenceStorageKeys.NcsAzureStorage)] IStreamableKeyValuePersistenceService ncsStorage)    {        _dctStorage = dctStorage;        _ncsStorage = ncsStorage;    }和用法:await _dctStorage.SaveAsync(........);await _ncsStorage.SaveAsync(........);但是,在執行時,它只會拾取最后一次注冊并將兩個對象保存到同一位置。我可以使用可枚舉方法讓它工作:public ReportingController(IEnumerable<IStreamableKeyValuePersistenceService> storage)    {        _storage = storage;    }然后對于可枚舉的每個,但如果可能的話我更愿意使用鍵控方法。關于我所缺少的任何想法?
查看完整描述

1 回答

?
慕哥9229398

TA貢獻1877條經驗 獲得超6個贊

對于以后遇到這個問題的人,我錯過了注冊,在這種情況下,執行接口IReportingController需要注冊WithAttributeFiltering()如下:

containerBuilder.RegisterType<ReportingController>().As<IReportingController>().WithAttributeFiltering();


查看完整回答
反對 回復 2022-12-31
  • 1 回答
  • 0 關注
  • 115 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號