public void AddFieldType(System.Xml.XmlNode node)
        {
            // add field type name the mapping
            var scName  = Sitecore.Xml.XmlUtil.GetAttribute("sitecoreFieldTypeName", node);
            var umlName = Sitecore.Xml.XmlUtil.GetAttribute("umlFieldTypeName", node);

            FieldTypes.Add(scName, umlName);

            // add the umlFieldTypeName to the aliases map to enable case-insensitive matches
            UmlFieldTypeAliases.Add(umlName, scName);

            // add the aliases to the alias map
            var umlAliases = Sitecore.Xml.XmlUtil.GetAttribute("umlAliases", node);

            if (string.IsNullOrEmpty(umlAliases))
            {
                return;
            }

            var aliases = umlAliases
                          .Split(new[] { '|' }, StringSplitOptions.RemoveEmptyEntries);

            foreach (var alias in aliases)
            {
                UmlFieldTypeAliases.Add(alias, scName);
            }
        }
        public virtual void AddFieldTypes(XmlNode configNode)
        {
            Assert.ArgumentNotNull(configNode, "configNode");
            var fieldName   = XmlUtil.GetAttribute("name", configNode);
            var storageType = XmlUtil.GetAttribute("storageType", configNode);
            var indexType   = XmlUtil.GetAttribute("indexType", configNode);
            var vectorType  = XmlUtil.GetAttribute("vectorType", configNode);
            var boost       = XmlUtil.GetAttribute("boost", configNode);
            var searchField = new SearchField(storageType, indexType, vectorType, boost);

            FieldTypes.Add(fieldName.ToLowerInvariant(), searchField);
        }
Пример #3
0
        /// <summary>
        /// Add the invalidations for the given key to the context. Used for a cache hit.
        /// </summary>
        /// <param name="cacheInvalidator"></param>
        /// <param name="key"></param>
        public void AddInvalidationsFor <TKey, TValue>(CacheInvalidator <TKey, TValue> cacheInvalidator, TKey key)
        {
            if (cacheInvalidator == null)
            {
                throw new ArgumentNullException("cacheInvalidator");
            }
            if (_entry == null)
            {
                throw new InvalidOperationException("Not valid for ContextType.None");
            }

            Entities.Add(cacheInvalidator.EntityToCacheKey.GetKeys(key));
            RelationshipTypes.Add(cacheInvalidator.RelationshipTypeToCacheKey.GetKeys(key));
            FieldTypes.Add(cacheInvalidator.FieldTypeToCacheKey.GetKeys(key));
            EntityInvalidatingRelationshipTypes.Add(cacheInvalidator.EntityInvalidatingRelationshipTypesToCacheKey.GetKeys(key));
            EntityTypes.Add(cacheInvalidator.EntityTypeToCacheKey.GetKeys(key));
        }
Пример #4
0
        /// <summary>
        /// コンストラクタ
        /// </summary>
        /// <param name="node">対象Node</param>
        /// <param name="semanticModel">対象ソースのsemanticModel</param>
        /// <param name="parent">親IAnalyzeItem</param>
        /// <param name="container">イベントコンテナ</param>
        public ItemField(FieldDeclarationSyntax node, SemanticModel semanticModel, IAnalyzeItem parent, EventContainer container) : base(parent, node, semanticModel, container)
        {
            ItemType = ItemTypes.Field;

            var declaredSymbol = semanticModel.GetDeclaredSymbol(node.Declaration.Variables.First());

            // フィールドの型設定
            var parts = ((IFieldSymbol)declaredSymbol).Type.ToDisplayParts(SymbolDisplayFormat.MinimallyQualifiedFormat);

            foreach (var part in parts)
            {
                // スペースの場合は型設定に含めない
                if (part.Kind == SymbolDisplayPartKind.Space)
                {
                    continue;
                }

                var name = Expression.GetSymbolName(part, true);
                var type = Expression.GetSymbolTypeName(part.Symbol);
                if (part.Kind == SymbolDisplayPartKind.ClassName)
                {
                    // 外部ファイル参照イベント発行
                    RaiseOtherFileReferenced(node, part.Symbol);
                }

                FieldTypes.Add(new Expression(name, type));
            }

            // デフォルト設定
            var constantValue = node.Declaration.Variables.FirstOrDefault();

            if (constantValue?.Initializer == null)
            {
                return;
            }
            var initializer = semanticModel.GetOperation(constantValue.Initializer.Value);

            DefaultValues.AddRange(OperationFactory.GetExpressionList(initializer, container));
        }