Defining new types

When setting the Type property attributes, you get a drop-down that contains a number of types that the Configuration Section Designer comes configured with by default. These types are the most common primitive .NET types, such as string and int as well as two date/time related types, DateTime and TimeSpan. Sometimes, it is desirable to add more types to the Configuration Section Designer, like your own custom classes or enums.

External types

You add more external types to the Configuration Section Designer by opening the Configuration Section Explorer pane (if it is not visible, go View -> Other Windows -> Configuration Section Explorer). You will see one node that contains all the configuration elements (these are the same that are shown on the design surface), and one node that contains the type definitions.

csd-explorer.png

To add a new type, right-click the root node, Configuration Section Model, and select Add new External Type. Right-click the new type, and select Properties. The type must be fully qualified by namespace and type name. This type will now show up in the Type drop-downs of attributes. In the image below, you can see that I have added the System.TimeZone type to the Type Defintions, and that I can now use it as a type for my properties.

csd-timezone.png

Enumerated types

You can also define Enumerated Types (enums). Unlike the external types, which are only references to existing types, these get code generated for them, and they get a proper XML Schema definition for full IntelliSense support. Support for using external enums is possible as well. These will not get code generated for them, but will still be put in the XML Schema.

As with the external types, you add more external types to the Configuration Section Designer by opening the Configuration Section Explorer pane. To add a new enumeration, right-click the root node, Configuration Section Model, and select Add new Enumerated Type. Right-click the new type, and select Properties. You must set the namespace, otherwise you'll get a validation error. You can also set the IsFlags property to true if this enumeration is an enumeration of flags. Finally, if this is a reference to an external enumeration, set the Code Generation Options to None. This will prevent the enumeration from being generated in the code, while still providing strong typing in the XML Schema.

You can now right click your new enumerated type and select Add New Enumeration Literal as many times as necessary. These are the values of the enumeration. Here's an example enumeration type that I created:

csd-letterflags.png

That should be all you need to know in order to define new types.

Last edited Dec 13, 2009 at 7:28 PM by alexschrod, version 2

Comments

No comments yet.