Xomega Framework allows you to easily load lookup tables into the lookup cache from an XML file with static enumerations. The following steps outline this process.
- Create the XML file with static enumerations. If you defined your enumerations in a Xomega model, then you can generate such XML file from the model. Otherwise you can manually create it using the format described below.
- Add the XML file your project as an embedded resource.
- In a method that runs during application startup create a new instance of XmlLookupCacheLoader class constructed from the resource stream for that file, and register it with the lookup cache using the LookupCache.AddCacheLoader method.
The following example shows how to load an XML file named
enumerations.xml inside a startup method for a WPF application. We use an existing type to access the assembly where this XML file is embedded, which can provide a resource stream for it.
Code:
private void Application_Startup(object sender, StartupEventArgs e)
{
Assembly asm = typeof(MyProject.Enumerations.Operators).Assembly;
LookupCache.AddCacheLoader(new XmlLookupCacheLoader(asm.GetManifestResourceStream(
asm.GetName().Name + ".enumerations.xml")));
}
The format of the XML file mimics the
structure of enumerations in the Xomega model and includes such essential information as the enumerations name, a list of properties, enumeration items and the property values of each item. Following is an example that demonstrates this format.
Code:
<enums xmlns="http://www.xomega.net/omodel">
<enum name="operators">
<properties>
<property name="sort order"/>
<property name="addl props" default="0"/>
<property name="multival"/>
<property name="type" multi-value="true"/>
<property name="exclude type" multi-value="true"/>
<property name="null check" default="0"/>
</properties>
<item name="Is Null" value="NULL">
<prop ref="sort order" value="00"/>
<prop ref="null check" value="1"/>
</item>
<item name="Is Equal To" value="IS">
<prop ref="sort order" value="02"/>
<prop ref="addl props" value="1"/>
<prop ref="multival" value="0"/>
</item>
<item name="Is One Of" value="ONEOF">
<prop ref="sort order" value="04"/>
<prop ref="addl props" value="1"/>
<prop ref="multival" value="1"/>
</item>
</enum>
</enums>