public bool IsParentOf(ResourceTypeReference other) { return (StringComparer.OrdinalIgnoreCase.Equals(this.Namespace, other.Namespace) && // Parent should have N types, child should have N+1, first N types should be equal this.Types.Length + 1 == other.Types.Length && Enumerable.SequenceEqual(this.Types, other.Types.Take(this.Types.Length), StringComparer.OrdinalIgnoreCase)); }
public static ResourceTypeReference?TryCombine(ResourceTypeReference baseType, IEnumerable <string> typeSegments) { var types = new List <string>(baseType.Types); var bestVersion = baseType.ApiVersion; foreach (var typeSegment in typeSegments) { if (!TryParseSingleTypeSegment(typeSegment, out var type, out var version)) { return(null); } types.Add(type); if (!string.IsNullOrEmpty(version)) { bestVersion = version; } } return(new ResourceTypeReference(baseType.Namespace, types, bestVersion)); }