public static string ComputePropertyKeyName(ITagTypeResolver tagResolver, PropertyKey propertyKey)
        {
            var className = tagResolver.TagFromType(propertyKey.OwnerType);
            var sb        = new StringBuilder(className.Length + 1 + propertyKey.Name.Length);

            sb.Append(className, 1, className.Length - 1); // Ignore initial '!'
            sb.Append('.');
            sb.Append(propertyKey.Name);
            return(sb.ToString());
        }
        public static string ComputePropertyKeyName(ITagTypeResolver tagResolver, PropertyKey propertyKey)
        {
            var className = tagResolver.TagFromType(propertyKey.OwnerType);
            var sb = new StringBuilder(className.Length + 1 + propertyKey.Name.Length);

            sb.Append(className, 1, className.Length - 1); // Ignore initial '!'
            sb.Append('.');
            sb.Append(propertyKey.Name);
            return sb.ToString();
        }
예제 #3
0
        /// <summary>
        /// 初始化标签分析器
        /// </summary>
        /// <param name="parsers">解析器类型</param>
        private static void InitializationParser(String[] parsers)
        {
            if (parsers == null)
            {
                parsers = Field.RSEOLVER_TYPES;
            }
            ITagParser[] tps = new ITagParser[parsers.Length];

            for (Int32 i = 0; i < tps.Length; i++)
            {
                tps[i] = (ITagParser)Activator.CreateInstance(Type.GetType(parsers[i]));
            }
            _tagResolver = new Parser.TagTypeResolver(tps);
        }
예제 #4
0
 /// <summary>
 /// 运行时构造函数
 /// </summary>
 /// <param name="tagResolver">标签解析器</param>
 /// <param name="cache">缓存</param>
 /// <param name="conf">配置信息</param>
 internal Runtime(ITagTypeResolver tagResolver,
     ICache cache,
     Configuration.ConfigBase conf)
 {
     if (tagResolver == null)
     {
         throw new ArgumentException("tagResolver");
     }
     if (conf == null)
     {
         throw new ArgumentException("conf");
     }
     if (String.IsNullOrEmpty(conf.TagPrefix))
     {
         throw new ArgumentException("conf.TagPrefix");
     }
     if (String.IsNullOrEmpty(conf.TagSuffix))
     {
         throw new ArgumentException("conf.TagSuffix");
     }
     if (conf.ResourceDirectories == null)
     {
         ResourceDirectories = new String[0];
     }
     else
     {
         ResourceDirectories = conf.ResourceDirectories;
     }
     this._tagResolver = tagResolver;
     this._cache = cache;
     TagFlag = conf.TagFlag;
     TagPrefix = conf.TagPrefix; ;
     TagSuffix = conf.TagSuffix;
     ThrowExceptions = conf.ThrowExceptions;
     StripWhiteSpace = conf.StripWhiteSpace;
     IgnoreCase = conf.IgnoreCase;
     if (IgnoreCase)
     {
         this._bindingFlags = BindingFlags.IgnoreCase;
         this._stringComparer = StringComparer.OrdinalIgnoreCase;
         this._stringComparison = StringComparison.OrdinalIgnoreCase;
     }
     else
     {
         this._stringComparison = StringComparison.Ordinal;
         this._bindingFlags = BindingFlags.Default;
         this._stringComparer = StringComparer.Ordinal;
     }
 }
예제 #5
0
 /// <summary>
 /// 模板分模器
 /// </summary>
 /// <param name="ts">TOKEN集合</param>
 /// <param name="TagTypeResolver">标签类型分析器</param>
 public TemplateParser(Token[] ts, ITagTypeResolver TagTypeResolver)
 {
     this.tokens   = ts;
     this.resolver = TagTypeResolver;
     Reset();
 }
예제 #6
0
        /// <summary>
        /// 初始化标签分析器
        /// </summary>
        /// <param name="parsers">解析器类型</param>
        private static void InitializationParser(String[] parsers)
        {
            if (parsers == null)
            {
                parsers = Field.RSEOLVER_TYPES;
            }
            ITagParser[] tps = new ITagParser[parsers.Length];

            for (Int32 i = 0; i < tps.Length; i++)
            {
                tps[i] = (ITagParser)Activator.CreateInstance(Type.GetType(parsers[i]));
            }
            _tagResolver = new Parser.TagTypeResolver(tps);
        }