В рамках моего крупного проекта я разрабатываю парсер для Интернета, который, согласно предопределенным правилам, будет получать данные с веб-страниц и помещать их в объекты. Я пишу в C# с использованием .Net 4.0 и SQL Server 2008.Какая-то аннотация для POCOs
Идея такова:
Предположим, у меня есть Car { Power, Weight, Price }
объект (который является ПОКО используется в EF для хранения данных). Я создаю правила для своего синтаксического анализатора, поэтому при сканировании какого-либо сайта он попытается заполнить свойства объекта.
Например: Car { Power=100Hp, Weight=1000kg, Price=7000$ }
Все это работает. Но так как все сайты разные, и даже на одном сайте данные могут быть структурированы по-другому, мне нужно каким-то образом проверить мои правила синтаксического анализа.
Я хочу, чтобы создать приложение тестер, который будет:
- Тейк список URL-адресов пунктов. Загрузите их, сохраните в некотором формате.
- Я проведу вручную, какие свойства элементов будут проанализированы правильно и пометьте их как правильные.
- Запустите тестер в режиме проверки. Где он должен снова загружать все из сети и теперь сравнивать с данными, которые я обозначил как правильно.
Таким образом, у меня могут быть свои модульные тесты для правил, в то время как я их улучшаю.
Сейчас идет актуальный вопрос: для того, чтобы осуществить все это, я не хочу, чтобы изменить мои сущности, я хотел бы иметь некоторую оболочку, как:
Car {
Power { Value, IsCorrect},
Weight {Value, IsCorrect},
Price {Value, IsCorrect}}
Так что весь мой существующий код может как и раньше, и только мой тестовый код, может использовать эту информацию аннотации. Кроме того, конечно, я хочу, чтобы эта информация была сериализована либо в базе данных, либо в XML.
Прямо сейчас моя общая идея - сериализовать автомобиль в Xml, а затем вручную добавить свойства аннотации и проверить их. Здесь вручную я имею в виду использование методов XmlDocument. Это должно сработать, но я не пришел к выводу о том, как хранить и получать доступ к аннотациям в памяти (мне не нравится идея делать все проверки с помощью XmlDocument)
Возможно, на каком-то динамическом языке, например javascript Я бы просто добавить аннотации как этот
Car c = { Power = 1, Weight=2 ...};
c["Power_IsCorrect"] = true;
c["Weight_IsCorrect"] = true;
///... etc
Я не могу себе представить, как это somehting в C# :(
Я думал, что-то вроде этого, спасибо за ваш ответ. Я должен это рассмотреть. –