出于好奇,想象你有这样一个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
的类作为可能的配置数?
答案 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)];
// ...
}
}