private static int FindCommonFragmentLength(Qualifier q1, Qualifier q2, StringComparison comparison = StringComparison.Ordinal) { if (null == q1 || null == q2) { return(int.MinValue); } if (!q1.IsCompliantTo(q2)) { return(int.MinValue); } if (q1.GuidOrNameCase != Qualifier.GuidOrNameOneofCase.Named) { return(int.MinValue); } int count = Math.Min(q1.Named.Frags.Count, q2.Named.Frags.Count); int index; for (index = 0; index < count; index++) { if (0 != string.Compare(q1.Named.Frags[index], q2.Named.Frags[index], comparison)) { return(index); } } return(index); }
public static Qualifier Append(this Qualifier aQualifier, Qualifier bQualifier) { if (aQualifier.IsCompliantTo(bQualifier)) { switch (aQualifier.GuidOrNameCase) { case Qualifier.GuidOrNameOneofCase.Named: return(aQualifier.Named.Frags.Concat(bQualifier.Named.Frags).ToArray().ToQualifier()); default: throw new NotSupportedException($"Not support for '{Qualifier.GuidOrNameOneofCase.Anonymous}'"); } } throw new NotSupportedException("Incompliant qualifier types"); }