public static void SetDatumValue(String value, DatumType datum)
{
if (datum != null && !String.IsNullOrEmpty(value))
{
int iValue;
long lValue;
double dValue;
uint uiValue;
ulong ulValue;
if (datum is binary)
((binary) datum).value = value;
if (datum is boolean)
((boolean) datum).value = value.Equals("1"); // 0 or 1
if (datum is dateTime)
((dateTime) datum).value = DateTime.Parse(value); //YYYY-MM-DD
if (datum is @double && double.TryParse(value, out dValue))
((@double) datum).value = dValue;
if (datum is hexadecimal)
((hexadecimal) datum).value = value; //^[0-9A-Fa-f]+$
if (datum is integer && int.TryParse(value, out iValue))
((integer) datum).value = iValue;
if (datum is @long && long.TryParse(value, out lValue))
((@long) datum).value = lValue;
if (datum is octal)
((octal) datum).value = value; //^[1-7][0-7]*$
if (datum is @string)
((@string) datum).Value = value;
if (datum is unsignedInteger && uint.TryParse(value, out uiValue))
((unsignedInteger) datum).value = uiValue;
if (datum is unsignedLong && ulong.TryParse(value, out ulValue))
((unsignedLong) datum).value = ulValue;
}
}