예제 #1
0
        protected T ReadOptional <T>(string elementName, string elementNamespace, ReadElement <T> readFunction, XmlReader reader)
        {
            if (elementName == null)
            {
                throw new ArgumentNullException(nameof(elementName));
            }

            if (reader == null)
            {
                throw new ArgumentNullException(nameof(reader));
            }

            if (readFunction == null)
            {
                throw new ArgumentNullException(nameof(readFunction));
            }

            if (!reader.IsStartElement(elementName, elementNamespace))
            {
                return(default(T));
            }
            else
            {
                T result = readFunction.Invoke(reader);
                return(result);
            }
        }
예제 #2
0
        protected T1 ReadOptionalAbstract <T1, T2>(string elementName, string elementNamespace, ReadElement <T2> readFunction, XmlReader reader)
            where T1 : T2
        {
            if (elementName == null)
            {
                throw new ArgumentNullException(nameof(elementName));
            }

            if (reader == null)
            {
                throw new ArgumentNullException(nameof(reader));
            }

            if (readFunction == null)
            {
                throw new ArgumentNullException(nameof(readFunction));
            }

            if (!reader.IsStartElement(elementName, elementNamespace))
            {
                return((T1)default(T2));
            }
            else
            {
                T1 result = (T1)readFunction.Invoke(reader);
                return(result);
            }
        }
예제 #3
0
        protected T ReadRequired <T>(string elementName, string elementNamespace, ReadElement <T> readFunction, XmlReader reader)
        {
            if (elementName == null)
            {
                throw new ArgumentNullException(nameof(elementName));
            }

            if (reader == null)
            {
                throw new ArgumentNullException(nameof(reader));
            }

            if (readFunction == null)
            {
                throw new ArgumentNullException(nameof(readFunction));
            }

            if (!reader.IsStartElement(XacmlConstants.ElementNames.ActionAttributeDesignator, this.Version.NamespacePolicy))
            {
                T result = readFunction.Invoke(reader);
                return(result);
            }
            else
            {
                throw new XmlException(elementName + " is required");
            }
        }