让我们考虑Data binding dynamic data中描述的问题。现在来看看Marc Gravell Marc's answer给出的最佳解决方案。 Marc在不使用TypeConverter的情况下提供了解决方案。现在是时候提交我的问题了。我正在寻找一个将TypeConverter
和PropertyDescriptor.Converter
组合在一起的代码示例,但问题与此类似。 Marc为字符串提供了一个简单的解决方案,但是如果我们添加其他类型,例如DateTime,int?
P.S。我正在使用自己的IBindingList
,IList
,ITypedList
,ICustomTypeDescriptor
实现索引器并在UI上包装对象......但是当它到来时我是新手编程世界缺席10年之后TypeConverter
以及C#[必要,但也很高兴]。
答案 0 :(得分:1)
最后,我这样做了:
我创建了名为TypeConverter
的自己CharacteristicTypeConverter
。
在我的PropertyDescriptor构造函数的实现中,我添加了:
var attrs = new List<Attribute>();
attrs.Add(new TypeConverterAttribute(typeof(CharacteristicTypeConverter)));
this.AttributeArray = attrs.ToArray();
要将上下文传递给转换器,我可以使用Marc Gravell的提示:http://bytes.com/topic/c-sharp/answers/676604-expandableobjectconvertors-typeconverters来实现ITypeDescriptorContext
。
在我的GetValue/SetValue
实施的PropertyDescriptor
中,我按如下方式使用转换器:Converter.ConvertTo(...)
,Converter.ConvertFrom