Beispiel #1
0
        /// <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()));
        }
Beispiel #2
0
        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);
            }
        }
Beispiel #3
0
        /// <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);
        }