Осуществите художественное оформление атрибута классов/Методов

16
задан OmG 17 May 2019 в 20:10
поделиться

5 ответов

Я записал бы единицу/интеграционный тест, которая проверяет, что любой класс, соответствующий некоторым данным критериям (т.е. разделяющий на подклассы X), украшен соответственно. При установке сборки для выполнения с тестами, у Вас может быть сбой сборки, когда этот тест перестал работать.

ОБНОВЛЕНИЕ: Вы сказали, "Похож, я должен буду просто засучить рукава и удостовериться, что модульные тесты коллективно сохраняются" - Вы не имеете к. Просто запишите общий тестовый класс, который использует отражение для нахождения всех классов, который должен утверждаться. Что-то вроде этого:

[TestClass]
public class When_type_inherits_MyObject
{
    private readonly List<Type> _types = new List<Type>();

    public When_type_inherits_MyObject()
    {
        // lets find all types that inherit from MyObject, directly or indirectly
        foreach(Type type in typeof(MyObject).Assembly.GetTypes())
        {
            if(type.IsClass && typeof(MyObject).IsAssignableFrom(type))
            {
                _types.Add(type);
            }
        }
    }

    [TestMethod]
    public void Properties_have_XmlElement_attribute
    {
        foreach(Type type in _types)
        {
            foreach(PropertyInfo property in type.GetProperties())
            {
                object[] attribs = property.GetCustomAttributes(typeof(XmlElementAttribute), false);
                Assert.IsTrue(attribs.Count > 0, "Missing XmlElementAttribute on property " + property.Name + " in type " + type.FullName);
            }
        }
    }
}
19
ответ дан 30 November 2019 в 22:10
поделиться

Можно записать модульные тесты для проверки на такого рода вещь - она в основном использует отражение.

, Учитывая факт это возможно, я предполагаю, что также было бы возможно записать правило FxCop, но я никогда не делал такой вещи.

1
ответ дан 30 November 2019 в 22:10
поделиться

Можно записать правило FxCop или даже проверить на атрибуты путем вызова GetType () в конструкторе базового класса и отражения по возвращенному типу.

1
ответ дан 30 November 2019 в 22:10
поделиться

Можно также использовать это понятие/постпроцессор, чтобы осуществить отношения между атрибутами и использовать подобный вход в систему для осуществления отношений между классами и атрибутами во время компиляции:

http://www.st.informatik.tu-darmstadt.de/database/publications/data/cepa-mezini-gpce04.pdf?id=92

0
ответ дан 30 November 2019 в 22:10
поделиться

Хорошее правило FXCop (и то, которое я нахожу, что мне нужно прямо сейчас) состояло бы в том, чтобы проверить, что все объекты, которые добавляются к Сессии ASP.NET, имеют сериализуемый атрибут. Я пытаюсь переместиться от состояния сеанса InProc до SQL Server. В первый раз, когда я запросил страницу, мой сайт аварийно завершился на мне, потому что несериализуемые объекты хранились на Сессии. Затем прибыл задача поиска через весь исходный код, ища каждый экземпляр, где объект установлен на Сессии... FXCop был бы хорошим решением. Что-то, чтобы продолжить работать...

0
ответ дан 30 November 2019 в 22:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: