DryIoC 寄存器配置
DryIoC register configuration
我正在使用 Prism 和 DryIoC 开发 Xamarin 项目。
目前我正在设置一些特定于环境的自定义配置,但是我正在为这方面的 IoC 语法苦苦挣扎。
我的 App.xaml.cs 中有以下代码:
private void SetConfiguration(IContainerRegistry containerRegistry)
{
// Get and deserialize config.json file from Configuration folder.
var embeddedResourceStream = Assembly.GetAssembly(typeof(IConfiguration)).GetManifestResourceStream("MyVismaMobile.Configurations.Configuration.config.json");
if (embeddedResourceStream == null)
return;
using (var streamReader = new StreamReader(embeddedResourceStream))
{
var jsonString = streamReader.ReadToEnd();
var configuration = JsonConvert.DeserializeObject<Configuration.Configuration>(jsonString);
What to do with configuration, in order to DI it?
}
配置变量注入应该怎么办?
我尝试了以下方法:
containerRegistry.RegisterSingleton<IConfiguration, Configuration>(c => configuration);
containerRegistry.Register<IConfiguration, Configuration>(c => configuration));
但是dryIoC的语法有问题
RegisterSingleton
和 Register
用于注册 types 容器随后将在其中创建实例。你已经有了你的实例,所以你使用
containerRegistry.RegisterInstance<IConfiguration>( configuration );
显然,实例总是单例的,所以没有单独的 RegisterInstanceSingleton
...
我正在使用 Prism 和 DryIoC 开发 Xamarin 项目。
目前我正在设置一些特定于环境的自定义配置,但是我正在为这方面的 IoC 语法苦苦挣扎。
我的 App.xaml.cs 中有以下代码:
private void SetConfiguration(IContainerRegistry containerRegistry)
{
// Get and deserialize config.json file from Configuration folder.
var embeddedResourceStream = Assembly.GetAssembly(typeof(IConfiguration)).GetManifestResourceStream("MyVismaMobile.Configurations.Configuration.config.json");
if (embeddedResourceStream == null)
return;
using (var streamReader = new StreamReader(embeddedResourceStream))
{
var jsonString = streamReader.ReadToEnd();
var configuration = JsonConvert.DeserializeObject<Configuration.Configuration>(jsonString);
What to do with configuration, in order to DI it?
}
配置变量注入应该怎么办? 我尝试了以下方法:
containerRegistry.RegisterSingleton<IConfiguration, Configuration>(c => configuration);
containerRegistry.Register<IConfiguration, Configuration>(c => configuration));
但是dryIoC的语法有问题
RegisterSingleton
和 Register
用于注册 types 容器随后将在其中创建实例。你已经有了你的实例,所以你使用
containerRegistry.RegisterInstance<IConfiguration>( configuration );
显然,实例总是单例的,所以没有单独的 RegisterInstanceSingleton
...