コード例 #1
0
        public static FXSpecification Create(
            IEnumerable <IDefineGroupFlexpression> predefinedOverwritableGroups,
            IEnumerable <IDefineGroupFlexpression> predefinedSealedGroups,
            IEqualityComparer <string> groupNameComparer = null)

        {
            predefinedOverwritableGroups ??= Array.Empty <IDefineGroupFlexpression>();
            predefinedSealedGroups ??= Array.Empty <IDefineGroupFlexpression>();

            groupNameComparer ??= StringComparer.Ordinal;

            var groups = predefinedOverwritableGroups
                         .Where(p => p.IsDefined)
                         .Select(p =>
                                 new GroupFlexpressionDefinition(p.GroupName,
                                                                 AutoFreezingValue.CreateDefinedNotFrozen(p.Content)))
                         .Concat(predefinedSealedGroups
                                 .Where(p => p.IsDefined)
                                 .Select(p =>
                                         new GroupFlexpressionDefinition(p.GroupName,
                                                                         AutoFreezingValue.CreateDefinedFrozen(p.Content), isSealed: true)))
                         .ToDictionary(
                pK => pK.GroupName,
                pV => pV,
                groupNameComparer);

            var res = new FXSpecification(groups);

            return(res);
        }
コード例 #2
0
        public Flexpression DefineGroup(string groupName, IFlexpression content)
        {
            var group = _groupsDefinitionsByName.GetExistingValueOrNew(
                groupName,
                pName => new GroupFlexpressionDefinition(pName, AutoFreezingValue.CreateUndefined <IFlexpression>()));

            if (content != null)
            {
                group.ContentContainer.Set(content);
            }

            return(group);
        }