private static object ConvertItemToModel(ISitecoreItem item, SitecoreTemplateAttributeInfo sitecoreTemplateAttributeInfo) { var result = Activator.CreateInstance(sitecoreTemplateAttributeInfo.Type); ((ISitecoreTemplate)result).Id = item.Id; foreach (var fieldInfo in sitecoreTemplateAttributeInfo.SitecoreFieldAttributeInfos) { var propertyInfo = fieldInfo.PropertyInfo; var propertyType = propertyInfo.PropertyType; if (propertyType.IsGenericEnumerable()) { var genericArguments = propertyType.GetGenericArguments(); var children = ConvertChildren(genericArguments[0], item.GetChildren()); if (children != null) { propertyInfo.SetValue(result, children); } continue; } SetFieldValue(item, result, fieldInfo); } return(result); }
private static IList <SitecoreTemplateAttributeInfo> GetTemplateInheritanceList(SitecoreTemplateAttributeInfo sitecoreTemplateAttributeInfo) { var result = new List <SitecoreTemplateAttributeInfo> { sitecoreTemplateAttributeInfo }; foreach (var derivedTemplate in sitecoreTemplateAttributeInfo.DerivedModelClasses) { result.AddRange(GetTemplateInheritanceList(derivedTemplate)); } return(result); }