У меня есть библиотека, которая имеет два входных формата для объектной модели, описанной библиотекой. В настоящее время я использую модель подписки на события для повышения ошибок/предупреждений/подробных сообщений для конечного пользователя библиотеки. Это не оказалось самой чистой моделью, и мне было интересно, существует ли соответствующий шаблон дизайна или что-то подобное в .NET Framework (когда в Риме), чтобы лучше справляться с этой ситуацией.Шаблон для повышения ошибок/предупреждений при разборе в библиотеке
// Rough outline of the current code
public abstract class ModelReader : IDisposable
{
public abstract Model Read();
public event EventHandler<MessageAvailableEventArgs> MessageAvailable;
protected virtual void RaiseError(string message)
{
var handler = this.MessageAvailable;
if (handler != null)
{
handler(this, new MessageAvailaibleEventArgs(
TraceEventType.Error, message);
}
}
}
Edit: некоторые разъяснения. Процедура Read
будет работать с ошибкой Fatal при использовании исключения. Сообщения записываются в потенциально несколько источников с конца пользователя, поэтому любая модель должна избегать ограничения количества потенциальных источников.
Эй. Я был бы признателен, если вы добавите отказ от ответов на ответы, в которых вы рекламируете пакет Agility Pack, отметив, что вы его автор. Я вижу, что есть такая группа, в которой вы в настоящее время не раскрываете свою принадлежность - по адресу http://stackoverflow.com/a/4601681/1709587, http://stackoverflow.com/a/5229972/1709587, http: //stackoverflow.com/a/5441683/1709587, http://stackoverflow.com/a/13126335/1709587, http://stackoverflow.com/a/5145916/1709587 и здесь. –
Я ничего здесь не рекламирую. Вы можете видеть мою «принадлежность», как вы говорите, если вы нажмете на меня как на пользователя. –
Хм, извините - вы правы, что этот конкретный пост на самом деле не рекомендует использовать Html Agility Pack, просто говоря об этом случайно. Возможно, я должен был внимательно прочитать перед комментированием. Тем не менее, мой запрос означает все связанные сообщения. –