Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }