private static void PopulateCommonProperties(IReflect type, ElasticEpiDocument source, TK destination) { var fields = type.GetFields(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance); foreach (var fi in fields) { fi.SetValue(destination, fi.GetValue(source)); } }
public virtual TK Parse(T page) { var baseObj = new ElasticEpiDocument { Title = page.Name, StartPublish = page.StartPublish, StopPublish = page.StopPublish, ContentGuid = page.ContentGuid.ToString(), LanguageName = page.Language?.Name, TypeName = page.GetOriginalType().Name, ContainerContentGuid = ResolveContainerContentGuid(page), Breadcrumbs = BreadcrumbsHelper.FromContent(page) }; var derivedObj = new TK(); PopulateCommonProperties(baseObj.GetType(), baseObj, derivedObj); return(derivedObj); }