I would like to pass some parameter to a class derived from TypeConverter. Please tell me how can I do this? For example, I have this class:
public class DDlExample { [TypeConverter(typeof(ExClassConverter))] public int Bounds { get; set; } } class ExClassConverter : TypeConverter { public int FirstParam{get;set;} ... }
I would like to pass the value of FirstParam as follows:
public class DDlExample { [TypeConverter(typeof(ExClassConverter), ***FirstParam=2***)] public int Bounds { get; set; } }
Is it possible?
This task seems to have no solution. I will try to repeat the problem. I have one class derived from TypeConverter and I apply it to other properties to display dropdown lists of different values. How to determine which properties from ExClassConverter : TypeConverter populate a drop-down list with the corresponding values?
[AttributeUsage(AttributeTargets.Property,AllowMultiple=true,Inherited=true)] public class ParamDesc:Attribute { public ParamDesc(int PD) { DictID = PD; } public int DictID { get; set; } } public class DDlExample { [ParamDesc(1)] [TypeConverter(typeof(ExClassConverter))] public int Bounds { get; set; } [ParamDes(2)] [TypeConverter(typeof(ExClassConverter))] public int Rounds { get; set; } } class ExClassConverter : TypeConverter { private List<string> LSValues1 = new List<string>(new string[] {"first","second","third"}); private List<string> LSValues2 = new List<string>(new string[] {"apple","melon","grapes"}); public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) { if (sourceType == typeof(string)) return true; return base.CanConvertFrom(context, sourceType); } public override bool CanConvertTo(ITypeDescriptorContext context, Type sourceType) { if (sourceType == typeof(int)) return (sourceType == typeof(int)?true:false); return base.CanConvertTo(context, sourceType); } public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destType) { if (value is int) { return LSValues1[(int)value]; } return base.ConvertTo(context, culture, value, destType); } public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) { if (value is string) { return LSValues1.IndexOf(value.ToString()); } return base.ConvertFrom(context, culture, value); } public override bool GetStandardValuesSupported(ITypeDescriptorContext context) { return true; } public override bool GetStandardValuesExclusive(ITypeDescriptorContext context) { return true; } public override TypeConverter.StandardValuesCollection GetStandardValues(ITypeDescriptorContext context) { StandardValuesCollection svc = new StandardValuesCollection(LSValues1); return svc; } }
source share