using System; using System.Collections.Generic; using System.Linq.Expressions; namespace COA.EnterpriseServices.DataAccess.QuickBase { public class QuickBaseDataAccess : IDataAccess where T : class, IRecord, new() { public bool Add(T item) { var fieldData = GetFieldData(item); // use fieldData to create mapped data to push to quickbase API return true; } public bool Update(T item) { return true; } public T Get(int id) { // we'll never get data from QB return null; } public ICollection Get(Expression> query) { // we'll never get data from QB return null; } private IEnumerable> GetFieldData(T item) { var properties = item.GetType().GetProperties(); foreach (var property in properties) { var fieldId = FieldMapRegistry.GetFieldId(property); var value = property.GetValue(item); if (fieldId != null) { yield return new KeyValuePair(fieldId.Value, value); } } } } }