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); }
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); }