private static object ExtractInnerValue(object rawValue)
{
Type valueType = rawValue.GetType();
PropertyInfo hasValueProperty = valueType.GetProperty ("HasValue");
object value = hasValueProperty.GetValue (rawValue, new object[0]);
if (value.Equals ((true)))
{
PropertyInfo valueProperty = valueType.GetProperty ("Value");
value = valueProperty.GetValue(rawValue, new object[0]);
return value;
}
return null;
}