コード例 #1
0
        public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
        {
            if (destinationType == typeof(string))
            {
                IEnumerable <T> enumerable = value as IEnumerable <T>;

                if (enumerable == null)
                {
                    throw new ArgumentException();
                }

                StringBuilder sb = new StringBuilder();

                foreach (T obj in enumerable)
                {
                    StringWriter  sw     = new StringWriter();
                    XmlTextWriter xmlOut = new XmlTextWriter(sw);
                    ApplicationSettingsSerializer.WriteToXml(xmlOut, obj);
                    sb.Append("<HEAD/>");
                    sb.Append(sw.ToString());
                    xmlOut.Close();
                }

                return(sb.ToString());
            }

            return(base.ConvertTo(context, culture, value, destinationType));
        }
コード例 #2
0
        public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
        {
            if (value is string)
            {
                List <T> list     = new List <T>();
                string[] elements = Regex.Split(value.ToString(), "<HEAD/>");

                foreach (string partial in elements)
                {
                    T newObj = new T();

                    StringReader  sr    = new StringReader(partial);
                    XmlTextReader xmlIn = new XmlTextReader(sr);
                    ApplicationSettingsSerializer.ReadFromXml(xmlIn, newObj);
                    xmlIn.Close();

                    list.Add(newObj);
                }

                return(list);
            }

            return(base.ConvertFrom(context, culture, value));
        }