public object this[DtoField field] { get { try { var wrapper = this.Values[field]; return(wrapper.GetValue(this)); } catch (Exception ex) { throw new InvalidOperationException(string.Format("Failed to get value for '{0}'.", field.JsonName), ex); } } set { try { // convert... var type = field.DtoProperty.PropertyType; var toSet = field.ConvertValueForSet(value); //object toSet = null; //if (value != null) //{ // if (type.IsEnum) // { // if (value is string) // toSet = Enum.Parse(field.DtoProperty.PropertyType, (string)value); // else // toSet = ConversionHelper.ChangeType(value, field.DtoProperty.PropertyType); // } // else // toSet = ConversionHelper.ChangeType(value, field.DtoProperty.PropertyType); //} // set... var wrapper = this.Values[field]; wrapper.SetValue(this, toSet); } catch (Exception ex) { throw new InvalidOperationException(string.Format("Failed to set value for '{0}'.\r\nValue: {1}", field.Name, value), ex); } } }
public static T GetValue <T>(this IDtoBase dto, DtoField field) { return(ConversionHelper.ChangeType <T>(dto[field])); }
//public IEnumerable<string> GetNames() //{ // return this.Values.Keys; //} protected TT GetValue <TT>(DtoField field) { return(ConversionHelper.ChangeType <TT>(this[field])); }