예제 #1
0
        /// <summary>
        /// Creates a new <see cref="ResourceId"/>
        /// </summary>
        /// <param name="resourceId">The fully-qualified resource Id</param>
        /// <param name="output">The resource Id</param>
        public static bool TryParse(string resourceId, out ResourceId output)
        {
            ResourceGroupLevelResourceId groupLevelResourceId;

            if (ResourceGroupLevelResourceId.TryParse(resourceId, out groupLevelResourceId))
            {
                output = groupLevelResourceId;
                return(true);
            }

            SubscriptionLevelResourceId subscriptionLevelResourceId;

            if (SubscriptionLevelResourceId.TryParse(resourceId, out subscriptionLevelResourceId))
            {
                output = subscriptionLevelResourceId;
                return(true);
            }

            TenantLevelResourceId tenantLevelResourceId;

            if (TenantLevelResourceId.TryParse(resourceId, out tenantLevelResourceId))
            {
                output = tenantLevelResourceId;
                return(true);
            }

            output = null;
            return(false);
        }
        /// <summary>
        /// Creates a new <see cref="TenantLevelResourceId"/>
        /// </summary>
        /// <param name="resourceId">The resource Id string</param>
        public static TenantLevelResourceId Parse(string resourceId)
        {
            TenantLevelResourceId output;

            if (!TenantLevelResourceId.TryParse(resourceId, out output))
            {
                throw new ArgumentException($"Unable to parse fully qualified resource id '{resourceId}'.", nameof(resourceId));
            }

            return(output);
        }
        /// <summary>
        /// Tries to create a new <see cref="TenantLevelResourceId"/>
        /// </summary>
        /// <param name="resourceId">The resource Id string</param>
        /// <param name="output">The resource Id output</param>
        public static bool TryParse(string resourceId, out TenantLevelResourceId output)
        {
            output = null;

            if (resourceId == null)
            {
                return(false);
            }

            var segments = resourceId.Trim('/').SplitRemoveEmpty('/');

            if (segments.Length < 1)
            {
                return(false);
            }

            if (!"providers".EqualsInsensitively(segments[0]))
            {
                return(false);
            }

            ResourceIdScope routingScope;
            IEnumerable <ResourceIdScope> parentScopes;

            if (!ResourceId.TryParseResourceScopes(
                    pathSegments: segments,
                    startIndex: 0,
                    routingScope: out routingScope,
                    parentScopes: out parentScopes))
            {
                return(false);
            }

            output = new TenantLevelResourceId(
                routingScope: routingScope,
                parentScopes: parentScopes);
            return(true);
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="TenantLevelResourceId"/> class
 /// </summary>
 /// <param name="routingScope">The routing scope</param>
 /// <param name="parentScopes">The parent scopes</param>
 private TenantLevelResourceId(ResourceIdScope routingScope, IEnumerable <ResourceIdScope> parentScopes)
     : base(routingScope, parentScopes, TenantLevelResourceId.FormatResourceId(routingScope, parentScopes))
 {
 }