我们建立了一个用于日志、缓存、电子邮件、消息、图像的框架库,该库使用了Entity Framework 6.0。这个库在我们组织中的多个应用中使用。
每当一个应用程序使用这个库,必须遵循一定的准则来实现。源应用程序必须创建 <appsetting>
dll将使用相同名称的值。Dll根据源文件中的 web.config
名称(这个连接字符串名称是固定的)。
在我们的新应用中,我们使用的是.NET Core;但由于我们的Framework库从 web.config
文件,而.NET Core没有,如何从.NET Core应用程序中使用这个?
如果你更换你的使用 ConfigurationManager.AppSettings["key"]
与使用 IConfiguration.Item["key"]
在我看来,这应该是最简单的迁移路径。在.NET Core中还有更多 "花哨 "的选项,但这应该是阻力最小的路径,我认为。
如果你需要在.NET Core和.NET Framework应用程序中同时使用该库,我建议在配置周围创建一个小的包装器,例如,在.NET Core中创建一个小的包装器。
public interface IAppSettings {
public string this[string key] { get; }
}
然后,创建它的两个实现,一个用于.NET Core,一个用于.NET Framework。类似于
public class WebConfigAppSettings: IAppSettings {
public string this[string key] => ConfigurationManager.AppSettings[key];
}
和,一个用于.NET Core,类似于。
public class NetCoreAppSettings: IAppSettings {
public NetCoreAppSettings(IConfiguration source) => _source = source;
public string this[string key] => _source[key];
}
在你的通用EF库之外创建实现。
然后,让你的EF库中需要配置的类对你的EF库中的 IAppSettings
接口,并使用IoCDependency Injection在每个应用程序中使用该库注入正确的实现。