public override object ConvertFrom(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value) { AApiVersionedFieldsCTD.TypedValuePropertyDescriptor pd = (AApiVersionedFieldsCTD.TypedValuePropertyDescriptor)context.PropertyDescriptor; IResourceKeyCTD rkCTD = (IResourceKeyCTD)pd.GetValue(null); AApiVersionedFields owner = rkCTD.owner; string field = rkCTD.field; object component = rkCTD.component; IResourceKey rk = (IResourceKey)AApiVersionedFieldsCTD.GetFieldValue(owner, field).Value; if (typeof(IResourceKey).IsAssignableFrom(value.GetType())) { IResourceKey rkNew = (IResourceKey)value; rk.ResourceType = rkNew.ResourceType; rk.ResourceGroup = rkNew.ResourceGroup; rk.Instance = rkNew.Instance; return(rk); } if (value != null && value is string) { if (AResourceKey.TryParse((string)value, rk)) { return(rk); } else { throw new NotSupportedException("Invalid data: " + (string)value); } } return(base.ConvertFrom(context, culture, value)); }
public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destinationType) { if (destinationType.Equals(typeof(string))) { IResourceKeyCTD ctd = value as IResourceKeyCTD; IResourceKey rk = (IResourceKey)GetFieldValue(ctd.owner, ctd.field).Value; return("" + rk); } return(base.ConvertTo(context, culture, value, destinationType)); }