/// <summary> /// Get list of standard values /// </summary> /// <param name="context">The type context</param> /// <returns>The list of document names</returns> public override TypeConverter.StandardValuesCollection GetStandardValues(ITypeDescriptorContext context) { List <SequenceParserType> ret = new List <SequenceParserType>(); SequenceChoiceMemberEntry entry; if (context.Instance is SequenceChoice) { entry = ((SequenceChoice)context.Instance).ParentEntry; } else { entry = (SequenceChoiceMemberEntry)ParserUtils.GetCompatibleType(typeof(SequenceChoiceMemberEntry), context.Instance); } if (entry != null) { foreach (SequenceParserType type in entry.ChoiceTypes) { ret.Add(type); } } return(new StandardValuesCollection(ret.ToArray())); }
private MemberEntryReference GetReference(ITypeDescriptorContext context) { object target = ParserUtils.GetCompatibleType(context.PropertyDescriptor.ComponentType, context.Instance); if (target != null) { return((MemberEntryReference)context.PropertyDescriptor.GetValue(target)); } else { return(null); } }
/// <summary> /// Convert an object to a document /// </summary> /// <param name="context">The type context</param> /// <param name="culture">The culture of the conversion</param> /// <param name="value">The value to convert</param> /// <returns>The converted value</returns> public override object ConvertFrom(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value) { object ret = null; if (value.GetType() == typeof(String)) { SequenceChoiceMemberEntry entry; if (context.Instance is SequenceChoice) { entry = ((SequenceChoice)context.Instance).ParentEntry; } else { entry = (SequenceChoiceMemberEntry)ParserUtils.GetCompatibleType(typeof(SequenceChoiceMemberEntry), context.Instance); } if (entry != null) { foreach (SequenceParserType type in entry.ChoiceTypes) { if (type.Name.Equals((string)value)) { ret = type; break; } } } } else if (typeof(SequenceParserType).IsAssignableFrom(value.GetType())) { ret = value; } else { ret = base.ConvertFrom(context, culture, value); } return(ret); }