Пример #1
0
        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);
        }