Esempio n. 1
0
        private static void SetFieldValue <T>(D7NodeBase d7Node,
                                              PropertyInfo inProp,
                                              PropertyInfo outProp,
                                              D7FieldAttribute fieldAttr,
                                              object value,
                                              T itemIn)
        {
            if (outProp == null)
            {
                return;
            }

            if (fieldAttr.FieldType == D7FieldTypes.DirectValue)
            {
                outProp.SetValue(d7Node, value, null);
                return;
            }

            object fieldVal = null;

            switch (fieldAttr.FieldType)
            {
            case D7FieldTypes.CckField:
                fieldVal = MapCckField(fieldAttr, value, itemIn, inProp);
                break;

            case D7FieldTypes.NodeReference:
                //Throw.IfNull(value, $"‹ID7Node› for “{outProp.Name}”");
                if (value != null)
                {
                    fieldVal = und.TargetIds((value.As <ID7Node>()).nid);
                }
                break;

            case D7FieldTypes.TermReference:
                fieldVal = MapTermRefField(outProp, value);
                break;

            case D7FieldTypes.FileReference:
                fieldVal = und.Fids(value.ToString().ToInt());
                break;

            case D7FieldTypes.UserReference:
                if (value != null)
                {
                    fieldVal = und.TargetIds((value.As <D7User>()).uid);
                }
                break;

            default:
                throw Error.Unsupported(fieldAttr.FieldType);
            }
            outProp.SetValue(d7Node, fieldVal, null);
        }
Esempio n. 2
0
        public static D7NodeBase Map <T>(T source, out string errorMsg)
        {
            errorMsg = null;
            D7NodeBase nod = null;

            try {
                nod = Map <T>(source);
            }
            catch (Exception ex)
            {
                errorMsg = ex.Details();
            }

            return(nod);
        }