private IConfigurationInitializer FindInitializer(Type type) { IConfigurationInitializer initializer = ConfigurationInitializers.ContainsKey(type) ? ConfigurationInitializers[type] : null; if (initializer != null || type == typeof(object)) { return(initializer); } else { return(FindInitializer(type.BaseType)); } }
public static void Initialize(this IConfiguration configuration, IConfigurationInitializer configurationInitializer) { configurationInitializer.Configure(configuration); }
/// <summary> /// Registers an object that will initialize the configuration for all instances of a type. /// </summary> /// <remarks> /// Only the most specific initialier will be used (for the most derived type). /// E.g. if there are initializers for types Window and Object, and a window is being tracked, only the Window initializer will be used. /// </remarks> /// <param name="cfgInitializer">The configuration initializer to register.</param> public void RegisterConfigurationInitializer(IConfigurationInitializer cfgInitializer) { ConfigurationInitializers[cfgInitializer.ForType] = cfgInitializer; }
/// <summary> /// 采用所有默认方式配置EventSourcing框架,配置信息初始化器由用户指定。 /// <remarks> /// 用户可以调用此重载使用自己喜欢的方式来初始化框架配置信息。 /// </remarks> /// </summary> /// <param name="appName">应用名称</param> /// <param name="configurationInitializer">框架配置初始化器</param> /// <param name="assemblies">其他相关的程序集</param> /// <returns></returns> public static Configuration Config(string appName, IConfigurationInitializer configurationInitializer, params Assembly[] assemblies) { return(Configuration.Config(appName, configurationInitializer, new TinyIoCObjectContainer(), assemblies)); }
/// <summary> /// 通过某个用户给定的IConfigurationInitializer来对当前的配置类实例进行初始化 /// </summary> /// <param name="initializer"></param> /// <returns></returns> public Configuration Initialize(IConfigurationInitializer initializer) { initializer.Initialize(this); return(this); }
/// <summary> /// 采用所有默认方式配置EventSourcing框架,配置信息初始化器以及IoC容器都由用户指定。 /// <remarks> /// 用户可以调用此重载使用自己喜欢的方式来初始化框架配置信息以及告诉框架该使用哪个IoC容器。 /// </remarks> /// </summary> /// <param name="appName">应用名称</param> /// <param name="configurationInitializer">框架配置初始化器</param> /// <param name="container">对象容器</param> /// <param name="assemblies">其他相关的程序集</param> /// <returns></returns> public static Configuration Config(string appName, IConfigurationInitializer configurationInitializer, IObjectContainer container, params Assembly[] assemblies) { return(Configuration.Create(appName).Initialize(configurationInitializer).Container(container, assemblies)); }