public override object ConvertTo ( System.ComponentModel.ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destinationType ) { if (typeof(string) == destinationType) { Source_AntennaList antennaList = value as Source_AntennaList; if (null == antennaList) { throw new ArgumentException("Expected a Source_AntennaList", "value"); } StringBuilder sb = new StringBuilder( ); foreach (Source_Antenna antenna in antennaList) { Object obj = TypeDescriptor.GetConverter(typeof(Source_Antenna)).ConvertToString(antenna); if (null == obj) { // Should NOT be possible ~ should get exception for bad arg // before seeing a null == obj return value } else { sb.Append(obj as String); sb.Append(';'); } } return(sb.ToString( )); } return(base.ConvertTo(context, culture, value, destinationType)); }
public override object ConvertFrom ( System.ComponentModel.ITypeDescriptorContext context, System.Globalization.CultureInfo culture, Object value ) { Source_AntennaList antennaList = new Source_AntennaList( ); if (String.IsNullOrEmpty(value as string)) { return(antennaList); } String[] antennaStrings = (value as String).Split(new Char[] { ';' }); if (null == antennaStrings) { return(antennaList); } foreach (String s in antennaStrings) { Object obj = TypeDescriptor.GetConverter(typeof(Source_Antenna)).ConvertFromString(s); if (null == obj) { // TODO : supply err msg || rely on Source_Antenna converter for msg } else { antennaList.Add(obj as Source_Antenna); } } return(antennaList); }