路由規則 URL 以 / 分割為片段,再以 { } 分割為子片段。核心類別繼承關係:
/ 分隔符。IsCatchAll 標記(是否包含捕獲所有參數)。internal sealed class ContentPathSegment : PathSegment {
public ContentPathSegment(IList<PathSubsegment> subsegments) {
this.Subsegments = subsegments;
}
public bool IsCatchAll => this.Subsegments.Any(seg =>
seg is ParameterSubsegment && ((ParameterSubsegment)seg).IsCatchAll);
public IList<PathSubsegment> Subsegments { get; private set; }
}
將 URL 模板解析為結構化物件樹,方便後續的比對、繫結、虛擬路徑生成等操作,體現組合模式與解析器模式的結合。