【问题标题】:Insert custom TypeConverter on a property at runtime, from inside a custom UITypeEditor在运行时从自定义 UITypeEditor 中在属性上插入自定义 TypeConverter
【发布时间】:2010-03-29 03:26:04
【问题描述】:

我创建了一个自定义 UITypeEditor。

我是否可以从 UITypeEditor 类内部插入一个属性,该属性也将 TypeConverter 附加到我的属性?

我尝试了以下方法,但无论我如何扭动它,都没有任何反应:

Attribute[] newAttributes = new Attribute[1];
newAttributes[0] = new TypeConverterAttribute(typeof(BooleanConverter));

现在,上面需要以某种方式附加以下内容:

TypeDescriptor.AddAttributes(context.Instance.PROPERTYNAME, newAttributes);

...但首先我不知道如何以通用方式获取相关属性,并且我尝试的所有代码都失败了。即使我尝试以这种方式全局分配 TypeConverter,它也会失败。 (不过,将其设置为属性本身的属性是可行的,只是为了排除该部分存在错误。)

【问题讨论】:

    标签: c# runtime typeconverter uitypeeditor


    【解决方案1】:

    TypeDescriptor 允许您将属性(至少就System.ComponentModel 而言)添加到typesobjects - 但不能添加到特定属性。要做到这一点(通常需要TypeDescriptionProvider - 但是,请注意,这不是一件容易实现的事情,您需要编写所有内容:

    • 提供者本身
    • ICustomTypeDescriptor
    • PropertyDescriptor 表示您想要操作的东西

    PropertyDescriptor 可以让你假装你有额外的属性(或者,通过override 更直接地更改Converter,而不会弄乱属性)。

    【讨论】:

    • 啊,是的,这就解释了。由于我想避免重新创建 PropertyDescriptor,我可能会坚持使用旧方式的属性。在几个属性上保存一行代码听起来太麻烦了。谢谢!
    猜你喜欢
    • 2020-03-09
    • 1970-01-01
    • 2021-07-31
    • 1970-01-01
    • 1970-01-01
    • 2017-02-15
    • 1970-01-01
    • 2022-12-17
    • 1970-01-01
    相关资源
    最近更新 更多