public void CopyContent(object value) { foreach (var obj in (IEnumerable)value) { if (!TryAddToGraph(obj)) { continue; } if (obj == null || Template.IsImmutable(obj.GetType()) || obj.GetType().GetTemplatingMode() == TemplatingMode.Copy) { AddChild(obj); } else { CreateChild(obj.GetType()); CopyObjectOverride(); AddChild(); } } }
public static TemplatingMode GetTemplatingMode(this PropertyInfo property) { if (property == null) { throw new ArgumentNullException("property"); } var attr = property.GetCustomAttribute <TemplatingAttribute>(); if (attr == null) { // Check for some built-in templating modes if (IsTemplatingHidden(property)) { return(TemplatingMode.Hidden); } return(Template.IsImmutable(property.PropertyType) ? TemplatingMode.Copy : TemplatingMode.Default); } return(attr.Mode); }