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(); }
/// <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); }
/// <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; } }
/// <summary> /// 模板分模器 /// </summary> /// <param name="ts">TOKEN集合</param> /// <param name="TagTypeResolver">标签类型分析器</param> public TemplateParser(Token[] ts, ITagTypeResolver TagTypeResolver) { this.tokens = ts; this.resolver = TagTypeResolver; Reset(); }