private IHtml InjectAttributes(IHtml html) { var fieldsOfHtmlPage = html.GetType() .GetFields(BindingFlags.NonPublic | BindingFlags.Instance); var fieldsOfHtmlManager = this.GetType() .GetFields(BindingFlags.NonPublic | BindingFlags.Instance); foreach (var fieldOfHtmlPage in fieldsOfHtmlPage) { Attribute attribute = fieldOfHtmlPage.GetCustomAttribute(typeof(InjectAttribute)); if (attribute == null) { continue; } var fieldHtmlManager = fieldsOfHtmlManager .FirstOrDefault(f => f.FieldType == fieldOfHtmlPage.FieldType); if (fieldHtmlManager != null) { fieldOfHtmlPage.SetValue(html, fieldHtmlManager.GetValue(this)); } } return(html); }