public virtual void Populate(FieldMap fieldMap, Entity entity)
        {
            var fieldsWithNoValueOnEntity = new List<string>();

            var @class = new Class(GetType());
            @class.EachField(delegate(FieldInfo fieldInfo)
                                 {
                                     var uiItem = fieldInfo.GetValue(this) as UIItem;
                                     if (uiItem == null || !ControlDictionary.Instance.IsEditable(uiItem)) return;

                                     string fieldName = fieldMap.GetFieldNameFor(fieldInfo.Name, fieldInfo.FieldType);
                                     if (string.IsNullOrEmpty(fieldName)) return;

                                     try
                                     {
                                         EntityField entityField = entity.Field(fieldName);
                                         if (entityField == null)
                                             fieldsWithNoValueOnEntity.Add(fieldName);
                                         else
                                             entityField.SetValueOn(uiItem);
                                     }
                                     catch (TargetInvocationException e)
                                     {
                                         throw new AppScreenException(
                                             string.Format("Error assigning {0}.{1} to {2}.{3} ", entity.GetType(), fieldName, GetType(), fieldInfo.Name),
                                             e.InnerException);
                                     }
                                 });

            if (fieldsWithNoValueOnEntity.Count == 0) return;

            string message = string.Join(",", fieldsWithNoValueOnEntity.ToArray());
            WhiteLogger.Instance.WarnFormat("Mapping to screen: {0} with {1}, No value specified for fields {2}", this, entity.GetType(), message);
        }
        public virtual void Populate(FieldMap fieldMap, Entity entity)
        {
            var fieldsWithNoValueOnEntity = new List <string>();

            var @class = new Class(GetType());

            @class.EachField(delegate(FieldInfo fieldInfo)
            {
                var uiItem = fieldInfo.GetValue(this) as UIItem;
                if (uiItem == null || !ControlDictionary.Instance.IsEditable(uiItem))
                {
                    return;
                }

                string fieldName = fieldMap.GetFieldNameFor(fieldInfo.Name, fieldInfo.FieldType);
                if (string.IsNullOrEmpty(fieldName))
                {
                    return;
                }

                try
                {
                    EntityField entityField = entity.Field(fieldName);
                    if (entityField == null)
                    {
                        fieldsWithNoValueOnEntity.Add(fieldName);
                    }
                    else
                    {
                        entityField.SetValueOn(uiItem);
                    }
                }
                catch (TargetInvocationException e)
                {
                    throw new AppScreenException(
                        string.Format("Error assigning {0}.{1} to {2}.{3} ", entity.GetType(), fieldName, GetType(), fieldInfo.Name),
                        e.InnerException);
                }
            });

            if (fieldsWithNoValueOnEntity.Count == 0)
            {
                return;
            }

            string message = string.Join(",", fieldsWithNoValueOnEntity.ToArray());

            WhiteLogger.Instance.WarnFormat("Mapping to screen: {0} with {1}, No value specified for fields {2}", this, entity.GetType(), message);
        }