Exemple #1
0
        public override Type GetValueType(Builtin builtin)
        {
            var type = base.GetValueType(builtin) ??
                       PluginUtility.GetOwnerElementType(builtin.Node);

            if (type == null)
            {
                //尝试获取value属性值的类型
                if (builtin.Properties.TryGet("value", out var property) && Parsers.Parser.CanParse(property.RawValue))
                {
                    type = Parsers.Parser.GetValueType(property.RawValue, builtin);
                }
            }

            return(type);
        }
        public override Type GetValueType(Builtin builtin)
        {
            //调用基类同名方法
            var type = base.GetValueType(builtin);

            if (type == null)
            {
                //尝试获取value属性值的类型
                if (builtin.Properties.TryGet("value", out var property) && Parsers.Parser.CanParse(property.RawValue))
                {
                    return(Parsers.Parser.GetValueType(property.RawValue, builtin));
                }

                //返回所有者元素类型(如果所有者如果是一个泛型集合的话,否则返回空)
                return(PluginUtility.GetOwnerElementType(builtin.Node));
            }

            return(type);
        }