OK, so I wrote a Visual Studio plugin that extends the Entity Framework designer. Everything's working fine. Well ... mostly ... the fact that if and only if there is a plugin, any validation problems in the updated .edmx are fatal and attributed to the plugin without the user having any chance to fix the problems ... in 99.784% of cases caused by the original code ... yeah, that's pretty annoying ... the only solution is to write a copy of the .edmx into a different file just before the EF Designer starts the validation and then replace the .edmx by this copy and fix the huge "Hey, I don't know what's the primary key for this view" problem.
Anyway ... most of the attributes I need to add to the properties that I want to display in the EF Designer are kinda OK. [DisplayName("...")], ["Description("...")], [Category("..")], [DefaultValue(...)]. All that's OK.
If I want a dropdown I just define an enum and it works automatically. (And if I want a dropdown with a dynamic list of options it ... well ... I haven't found a way to do that).
Then if I want a multiline input for the property, I know how to do it, it's just an attribute. An attribute that looks like this:
[EditorAttribute(typeof(System.ComponentModel.Design.MultilineStringEditor),typeof(System.Drawing.Design.UITypeEditor))]
Lovely, isn't it?
OK, so I thought I could define subclass (named for example MultiLineAttribute) that'd use the inherited constructor with those values:
public class MultiLineAttribute : System.ComponentModel.EditorAttribute { public MultiLineAttribute() : base(typeof(System.ComponentModel.Design.MultilineStringEditor), typeof(System.Drawing.Design.UITypeEditor)) { } }Nope. Cannot derive from sealed type.
Why?!? Why the heck does the silly class have to be seaeaeaeaealed?