This class represents a specialization of data table used to hold the data from the enums.

Namespace:  CA.Common.Attributes
Assembly:  CA.Common (in CA.Common.dll) Version: 1.0.0.0 (1.0.0.0)

Remarks

The three columns in the datatable are:
  • "ID" as int
  • "EnumCodeValue" as string
  • "EnumStringValue" as string

source code:

CopyC#
//Source code from the Code Associate C# code library, Full documentation and latest updates can be found
//@ http://www.codeassociate.com/caapi/
using System;
using System.Data;

namespace CA.Common.Attributes
{
    public class StringEnumDataTable : DataTable
    {

        public StringEnumDataTable()
        {
            Columns.Add("ID", typeof(int));
            Columns.Add("EnumCodeValue", typeof(string));
            Columns.Add("EnumStringValue", typeof(string));
            AcceptChanges();    
        }

        public void AddRowFromContainer(StringEnumContainer container)
        {
            object[] datarow = new object[3];
            datarow[0] = container.EnumIntvalue;
            datarow[1] = container.EnumCodevalue.ToString();
            datarow[2] = container.EnumStringvalue;
            LoadDataRow(datarow, true);
        }

        public new void WriteXmlSchema(System.IO.Stream s)
        {
            // This simply provides a documentation hook point for the WriteXmlSchema method
            base.WriteXmlSchema(s);
        }


        public new void ReadXmlSchema(System.IO.Stream s)
        {
            // This simply provides a documentation hook point for the ReadXmlSchema method
            base.ReadXmlSchema(s);
        }



    }
}

Examples

Given:

CopyC#
public enum TestEnumValues
{
    [StringValue("A non valid .NET name")]
    NonValidDotNetName = 1,

    EnumValueWithNoStringValue = 2,

    EnumValueWithNoNumber
}

The Code Below

CopyC#
[Test]
public void CheckStringToEnumAsDataTable()
{
    DataTable dt = StringEnum.GetEnumValuesAsDataTable(typeof(TestEnumValues));
    foreach (DataRow dr in dt.Rows)
    {
        Trace.WriteLine(string.Format("ID={0}", dr["ID"]));
        Trace.WriteLine(string.Format("EnumCodeValue={0}", dr["EnumCodeValue"]));
        Trace.WriteLine(string.Format("EnumStringValue={0}", dr["EnumStringValue"]));
    }
}

Will Produce

             ID=1
             EnumCodeValue=NonValidDotNetName
             EnumStringValue=A non valid .NET name
             ID=2
             EnumCodeValue=EnumValueWithNoStringValue
             EnumStringValue=
             ID=3
             EnumCodeValue=EnumValueWithNoNumber
             EnumStringValue=
             

Inheritance Hierarchy

System..::.Object
  System.ComponentModel..::.MarshalByValueComponent
    System.Data..::.DataTable
      CA.Common.Attributes..::.StringEnumDataTable

See Also