/// <summary> /// 解释处理 MaskToken 内容并返回处理结果。 /// </summary> /// <param name="token">要处理的 MaskToken 。</param> /// <returns>处理结果。</returns> /// <exception cref="ArgumentNullException"/> private string InterpretToken(MaskToken token) { if (token == null) { throw new ArgumentNullException(nameof(token)); } IMaskTokenHandler targetHandler = null; foreach (IMaskTokenHandler handler in m_handlers) { if (handler.ExpectedTokenTypeId == token.TypeId) { targetHandler = handler; break; } } if (targetHandler == null) { // 没有找到对应的 MaskToken 处理器。 return(token.Content); } else { return(targetHandler.Process(token)); } }
/// <summary> /// 解释位于 MaskToken 读取器中的掩码并返回解释结果。 /// </summary> /// <returns>解释结果。</returns> public string Interpret() { // 写入日志信息。 Log.Debug("Interpreting mask: \"{0}\".", BaseReader.Mask); StringBuilder builder = new StringBuilder(); m_reader.SetOffset(OffsetPositions.Begin); while (!m_reader.EndOfMask) { MaskToken token = m_reader.Read(); builder.Append(InterpretToken(token)); } string result = builder.ToString(); Log.Debug("Interpreting complete. Result = \"{0}\".", result); return(result); }