如何使用Attributes设置自定义UITypeEditor的属性

时间:2014-10-24 08:05:18

标签: c# .net uitypeeditor

出于好奇,想象你有这样一个UITypeEditor:

public class CustomEditor : System.Drawing.Design.UITypeEditor
{
    public bool DoSomething { get; set; }
    [...]
}

并且您希望使用它来编辑您的某个属性,并将DoSomething设置为true

public MyClass
{
    [EditorAttribute(typeof(CustomEditor), typeof(System.Drawing.Design.UITypeEditor))]
    public string MyProperty { get; set; }
    [...]
}

如何指定在编辑编辑器时要设置的DoSomething CustomEditor属性的值? 这是否可行,或者您是否必须创建尽可能多的继承CustomEditor的类作为可能的配置数?

1 个答案:

答案 0 :(得分:1)

UITypeEditor.EditValue的实现中,您可以查看context参数以获取对正在编辑的属性的描述符的引用。然后,您可以查看另一个属性,在该属性中放置编辑器配置值。

public class CustomEditor : System.Drawing.Design.UITypeEditor
{

   public override object EditValue(
       ITypeDescriptorContext context,
       IServiceProvider provider,
       object value)
   {
       var property = context.PropertyDescriptor;
       var config = (MyConfigAttribute)
           property.Attributes[typeof(MyConfigAttribute)];
       // ...
   }

}