Abstract class for a Windows structure.
コード例 #1
0
        /// <summary>
        /// Create a printable string representation of the object.
        /// </summary>
        /// <returns>String containing all property-value pairs.</returns>
        public override string ToString()
        {
            AbstractStructure obj = this;

            PropertyInfo[] properties = obj.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance);
            StringBuilder  sb         = new StringBuilder();

            sb.Append($"{obj.GetType().Name}\n");

            foreach (PropertyInfo p in properties)
            {
                if (p.PropertyType.IsArray)
                {
                    if (p.GetValue(obj, null) == null)
                    {
                        continue;
                    }

                    foreach (object entry in (IEnumerable)p.GetValue(obj, null))
                    {
                        if (entry.GetType().IsSubclassOf(typeof(AbstractStructure)) == false)
                        {
                            continue;
                        }

                        sb.Append(entry.ToString());
                    }
                }
                else
                {
                    sb.AppendFormat("{0}: {1}\n", p.Name, p.GetValue(obj, null));
                }
            }

            return(sb.ToString());
        }