コード例 #1
0
        public override ReferenceFilter Clone()
        {
            ReferenceMemberFilter filter = new ReferenceMemberFilter(this);

            if (_typeName != null)
            {
                filter._typeName = String.Copy(_typeName);
            }

            return(filter);
        }
コード例 #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="writer"></param>
        public override void WriteXml(XmlWriter writer)
        {
            BuildExceptions.NotNull(writer, "writer");

            // For the attribute filter...
            // <type name="BindableAttribute" expose="true"/>

            // For all api filter...
            // <type name="Object" expose="false">
            //   <member name="ToString" expose="true" />
            // </type>
            bool isExposed = this.Expose;

            writer.WriteStartElement(TagName);
            writer.WriteAttributeString("name", this.Name);
            writer.WriteAttributeString("expose", isExposed.ToString());

            if (_isAttributeType == false)
            {
                int itemCount = _listMembers == null ? 0 : _listMembers.Count;
                if (isExposed)
                {
                    for (int i = 0; i < itemCount; i++)
                    {
                        ReferenceMemberFilter memberFilter = _listMembers[i];
                        if (!memberFilter.Expose)
                        {
                            memberFilter.WriteXml(writer);
                        }
                    }
                }
                else
                {
                    for (int i = 0; i < itemCount; i++)
                    {
                        ReferenceMemberFilter memberFilter = _listMembers[i];
                        if (memberFilter.Expose)
                        {
                            memberFilter.WriteXml(writer);
                        }
                    }
                }
            }

            writer.WriteEndElement();
        }
コード例 #3
0
 public ReferenceMemberFilter(ReferenceMemberFilter source)
     : base(source)
 {
     _typeName = source._typeName;
 }
コード例 #4
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="reader"></param>
        public override void ReadXml(XmlReader reader)
        {
            BuildExceptions.NotNull(reader, "reader");

            Debug.Assert(reader.NodeType == XmlNodeType.Element);

            if (reader.NodeType != XmlNodeType.Element)
            {
                return;
            }
            if (!String.Equals(reader.Name, TagName,
                               StringComparison.OrdinalIgnoreCase))
            {
                return;
            }

            string nodeText = reader.GetAttribute("name");

            if (!String.IsNullOrEmpty(nodeText))
            {
                this.Name = nodeText;

                _isAttributeType = (nodeText.IndexOf("Attribute",
                                                     StringComparison.Ordinal) >= 0);
            }
            nodeText = reader.GetAttribute("expose");
            if (!String.IsNullOrEmpty(nodeText))
            {
                this.Expose = Convert.ToBoolean(nodeText);
            }

            if (reader.IsEmptyElement)
            {
                return;
            }

            if (_listMembers == null)
            {
                _listMembers = new BuildList <ReferenceMemberFilter>();
            }

            string      nodeName = null;
            XmlNodeType nodeType = XmlNodeType.None;

            while (reader.Read())
            {
                nodeName = reader.Name;
                nodeType = reader.NodeType;

                if (nodeType == XmlNodeType.Element)
                {
                    if (String.Equals(nodeName, ReferenceMemberFilter.TagName,
                                      StringComparison.OrdinalIgnoreCase))
                    {
                        ReferenceMemberFilter memberFilter = new ReferenceMemberFilter();
                        memberFilter.ReadXml(reader);

                        _listMembers.Add(memberFilter);
                    }
                }
                else if (nodeType == XmlNodeType.EndElement)
                {
                    if (String.Equals(nodeName, TagName,
                                      StringComparison.OrdinalIgnoreCase))
                    {
                        break;
                    }
                }
            }
        }