Select use dynamic “enumerations” to hold values that are user defined and maintained in the database. A partial list of these classes is IBillCode, IState, and ITitleStatus. Below is a static helper to get a member value.
/// <summary>
/// Get member of IEnumValue based class.
/// </summary>
/// <typeparam name="T">type Interface</typeparam>
/// <param name="sp">Caller can pass either SelectServer or IOrder instance.</param>
/// <param name="code">Alias for member Name.</param>
/// <returns>Member with specified code or throws
/// InvalidOperationException (Sequence contains no elements).</returns>
public static T GetIEnumValueFromName<T>(IServiceProvider sp, string code)
where T : IEnumValue
{
IEnumManager enumMgr = (IEnumManager)sp.GetService(typeof(IEnumManager));
T value = enumMgr.GetEnum<T>()
.Values.Where(t => t.Name == code).First();
return value;
}
/// <summary>
/// Get member of IEnumValue based class.
/// </summary>
/// <typeparam name="T">type Interface</typeparam>
/// <param name="sp">Caller can pass either SelectServer or IOrder instance.</param>
/// <param name="code">Alias for member Name.</param>
/// <returns>Member with specified code or throws
/// InvalidOperationException (Sequence contains no elements).</returns>
public static T GetIEnumValueFromName<T>(IServiceProvider sp, string code)
where T : IEnumValue
{
IEnumManager enumMgr = (IEnumManager)sp.GetService(typeof(IEnumManager));
T value = enumMgr.GetEnum<T>()
.Values.Where(t => t.Name == code).First();
return value;
}
/// <summary> /// Get member of IEnumValue based class. /// </summary> /// <typeparam name="T">type Interface</typeparam> /// <param name="sp">Caller can pass either SelectServer or IOrder instance.</param> /// <param name="code">Alias for member Name.</param> /// <returns>Member with specified code or throws /// InvalidOperationException (Sequence contains no elements).</returns> public static T GetIEnumValueFromName<T>(IServiceProvider sp, string code) where T : IEnumValue { IEnumManager enumMgr = (IEnumManager)sp.GetService(typeof(IEnumManager)); T value = enumMgr.GetEnum<T>() .Values.Where(t => t.Name == code).First(); return value; }
Here is an example of how to use the helper. Note that you can pass either an order instance to the helper or the SelectServer instance.
IOrder order = {get order instance}
string code = "DOC";
var bCode = GetIEnumValueFromName<IBillCode>(order, billCode);
IOrder order = {get order instance}
string code = "DOC";
var bCode = GetIEnumValueFromName<IBillCode>(order, billCode);
IOrder order = {get order instance} string code = "DOC"; var bCode = GetIEnumValueFromName<IBillCode>(order, billCode);