Воздействие Авто выглядит очень мало. (Хотя очевидно более Никогда).
Если мы рассмотрим код в System.Web.UI.TemplateParser, мы видим в ImportSourceFile
что процесс прерывается рано, если режим установлен в Never
:
if (this.CompilationMode == CompilationMode.Never)
{
return null;
}
Который, конечно, полезно, и, безусловно, самого низкого воздействия. Тем не менее, продолжая через подпрограммы в TemplateParser
, мы можем видеть в ParseStringInternal
анализатор буквально сканирует загруженный шаблон на поиск вариаций <%
:
if (!this.flags[2] && (match = BaseParser.aspCodeRegex.Match(text, startat)).Success)
{
string str3 = match.Groups["code"].Value.Trim();
if (str3.StartsWith("$", StringComparison.Ordinal))
{
this.ProcessError(SR.GetString("ExpressionBuilder_LiteralExpressionsNotAllowed", new object[] { match.ToString(), str3 }));
}
else
{
this.ProcessCodeBlock(match, CodeBlockType.Code, text);
}
}
Обратите внимание на BaseParser.aspCodeRegex
, который является экземпляром этой модели:
public AspCodeRegex()
{
base.pattern = @"\G<%([email protected])(?<code>.*?)%>";
...
}
Если он не встречает ни одного, он просто движется дальше. Поиск - довольно недорогая операция - самый большой хит - это когда коды кода фактически найдены, компилируя их.
Как вы смогли просмотреть код System.Web.UI.TemplateParser? Отличный ответ BTW. – frankadelic
@frankadelic Приветствия! Я использую ** Reflector ** (http://red-gate.com/products/reflector) - лучшая документация - это сам код :) –