/// <summary> /// 使用点(.)来访问深度字典,并移除其中指定的值 /// </summary> /// <param name="dict">规定字典</param> /// <param name="key">键,支持使用点(.)来进行深度访问</param> public static bool Remove(IDictionary <string, object> dict, string key) { Guard.Requires <ArgumentNullException>(dict != null); Guard.Requires <ArgumentNullException>(key != null); var keyArr = Arr.Reverse(key.Split('.')); return(RemoveValueByDepthArray(dict, ref keyArr)); }
/// <summary> /// 使用点(.)来访问深度字典,并为其指定位置设定一个值 /// </summary> /// <param name="dict">规定字典</param> /// <param name="key">键,支持使用点(.)来进行深度访问</param> /// <param name="val">设定的值</param> public static void Set(IDictionary <string, object> dict, string key, object val) { Guard.Requires <ArgumentNullException>(dict != null); Guard.Requires <ArgumentNullException>(key != null); var keyArr = Arr.Reverse(key.Split('.')); SetValueByDepthArray(dict, ref keyArr, val); }
/// <summary> /// 加载以代码形式提供的服务提供者 /// </summary> private static void LoadCodeProvider() { foreach (var provider in Arr.Reverse(Providers.ServiceProviders)) { if (!App.IsRegisted(provider)) { App.Register(provider); } } }
/// <summary> /// 使用点(.)来访问深度字典 /// </summary> /// <param name="dict">规定字典</param> /// <param name="key">键,支持使用点(.)来进行深度访问</param> /// <param name="def">默认值</param> /// <returns>字典值</returns> public static object Get(IDictionary <string, object> dict, string key, object def = null) { if (dict == null) { return(def); } if (string.IsNullOrEmpty(key)) { return(dict); } var keyArr = Arr.Reverse(key.Split('.')); return(GetValueByDepthArray(dict, ref keyArr) ?? def); }
/// <summary> /// 加载Unity组件的服务提供者 /// </summary> private static void LoadUnityComponentProvider() { var root = App.Make <Component>(); if (root == null) { return; } var providers = root.GetComponentsInChildren <IServiceProvider>(); foreach (var provider in Arr.Reverse(providers)) { if (provider == null) { continue; } App.Register(provider); } }
/// <summary> /// 获取引导程序 /// </summary> /// <returns>引导脚本</returns> protected virtual IBootstrap[] GetBootstraps() { return(Arr.Reverse(Arr.Merge(GetComponents <IBootstrap>(), Bootstraps.Bootstrap))); }