private async Task ReadEntityAsync()

in src/Microsoft.Azure.NotificationHubs/NotificationHubClient.cs [3463:3501]


        private async Task<TEntity> ReadEntityAsync<TEntity>(Stream source) where TEntity : EntityDescription
        {
            using (var xmlReader = XmlReader.Create(source, new XmlReaderSettings { Async = true }))
            {
                await xmlReader.MoveToContentAsync().ConfigureAwait(false);
                if (xmlReader.Name != "entry")
                {
                    throw new FormatException("Required 'entry' element is missing");
                }

                xmlReader.ReadToDescendant("content");
                xmlReader.ReadStartElement();

                var entity = _entitySerializer.Deserialize(xmlReader, xmlReader.Name);

#pragma warning disable CS0618

                if (typeof(GcmRegistrationDescription).IsAssignableFrom(typeof(TEntity)))
                {
                    return (TEntity)entity;
                }

                if (entity is GcmTemplateRegistrationDescription gcmTemplateRegistrationDescription)
                {
                    var fcmTemplateRegistrationDescription = new FcmTemplateRegistrationDescription(gcmTemplateRegistrationDescription);
                    return (fcmTemplateRegistrationDescription as TEntity);
                }

                if (entity is GcmRegistrationDescription gcmRegistrationDescription)
                {
                    var fcmRegistrationDescription = new FcmRegistrationDescription(gcmRegistrationDescription);
                    return (fcmRegistrationDescription as TEntity);
                }

#pragma warning restore CS0618

                return (TEntity)entity;
            }
        }