/// <summary> /// 注册所有插件中的扩展托管属性 /// </summary> internal static void InitExtensionProperties() { if (!ManagedPropertyRepository.Instance.IsExtensionRegistered) { var allAssemblies = RafyEnvironment.GetAllPlugins().Select(p => p.Assembly); ManagedPropertyRepository.Instance.IntializeExtension(allAssemblies); } }
private void InitConfigurations() { if (_extendConfigurations == null) { /*********************** 代码块解释 ********************************* * 查找所有 EntityConfig 类型,并根据是否为扩展视图的配置类, * 分别加入到两个不同的列表中。 **********************************************************************/ var defaultRepo = new Dictionary <Type, List <TViewConfig> >(100); var extendRepo = new Dictionary <ExtendTypeKey, List <TViewConfig> >(100); var entityType = typeof(TViewConfig); //视图配置可以放在所有插件中。 foreach (var p in RafyEnvironment.GetAllPlugins()) { foreach (var type in p.Assembly.GetTypes()) { if (!type.IsGenericTypeDefinition && entityType.IsAssignableFrom(type)) { var config = Activator.CreateInstance(type) as TViewConfig; config.PluginIndex = p.SetupIndex; config.InheritanceCount = TypeHelper.GetHierarchy(type, typeof(ManagedPropertyObject)).Count(); List <TViewConfig> typeList = null; if (config.ExtendView == null) { if (!defaultRepo.TryGetValue(config.EntityType, out typeList)) { typeList = new List <TViewConfig>(2); defaultRepo.Add(config.EntityType, typeList); } } else { var key = new ExtendTypeKey { EntityType = config.EntityType, ExtendView = config.ExtendView }; if (!extendRepo.TryGetValue(key, out typeList)) { typeList = new List <TViewConfig>(2); extendRepo.Add(key, typeList); } } typeList.Add(config); } } } _configurations = defaultRepo; _extendConfigurations = extendRepo; } }
private static void InitTypeConfigurations() { if (_typeConfigurations == null) { /*********************** 代码块解释 ********************************* * 查找所有 EntityConfig 类型,并根据是否为扩展视图的配置类, * 分别加入到两个不同的列表中。 **********************************************************************/ var defaultRepo = new Dictionary <Type, List <EntityConfig> >(100); var entityType = typeof(EntityConfig); //实体配置一般只放在领域插件中。但是,一些只存在于客户端的实体,则会放到界面插件中,所以这里需要检查所有的插件。 foreach (var p in RafyEnvironment.GetAllPlugins()) { foreach (var type in p.Assembly.GetTypes()) { if (!type.IsGenericTypeDefinition && entityType.IsAssignableFrom(type)) { var config = Activator.CreateInstance(type) as EntityConfig; config.PluginIndex = p.SetupIndex; config.InheritanceCount = TypeHelper.GetHierarchy(type, typeof(ManagedPropertyObject)).Count(); List <EntityConfig> typeList = null; if (!defaultRepo.TryGetValue(config.EntityType, out typeList)) { typeList = new List <EntityConfig>(2); defaultRepo.Add(config.EntityType, typeList); } typeList.Add(config); } } } _typeConfigurations = defaultRepo; } }