2017-09-05 28 views
1

我有一个从ASP.Net核心(目标为4.5)和4.5网络应用引用的类库,我想共享应用程序设置。我在4.5侧使用Unity的DI,在Core侧使用Core Bootstrapping。在核心方面,我注册了,像这样在Unity中使用IOptions

services.Configure<AppSettings>(Configuration.GetSection("AppSettings")); 

型我的应用程序设置的话,我引用的AppSettings像这样

private readonly AppSettings _appSettings; 
public SubmissionRepository(PricingContext dbContext, IMapper mapper, IOptions<AppSettings> appSettings) 
{ 
    _appSettings = appSettings; 
} 

我想在4.5端注册我的服务,我能使用Unity为此在WebApiConfig.cs

container.RegisterType<AppSettings>(new InjectionFactory(o => BuildAppSettings())); 

其中BuildAppSettings只是填充使用ConfigurationManager中的该类型的实例(不知道这是做正确的方式)

但是我得到一个异常在运行

无法转换类型的对象“.Core.Integration.Models.AppSettings' 键入 ” Microsoft.Extensions.Options.IOptions`1 [核心。 Integration.Models.AppSettings]”。

我猜我需要以某种方式把IOptions实例放入我的容器,但不知道如何做到这一点。有没有更好的方法来做到这一点?

回答

1

如果我用Google搜索了10多秒,我就发现这个

Options.Create(new AppSettings{ 
    // config reads 
});