2016-05-05 1 views
0

Иногда приложения начинают выделять человеческие читаемые строки (например, сообщение журнала, например), а затем мы определяем, что в будущем мы хотим программно обрабатывать эти строки, возможно, показывая определенные строки в одну сторону или подсчитывая другие типы строк, чтобы показать число встречаемости.Каковы хорошие решения для связывания идентификатора с сообщением?

Для этого код, обрабатывающий эти строки, должен иметь представление о том, что каждая строка «означает», поэтому его можно классифицировать и обрабатывать соответственно ... мой вопрос: как лучше всего это сделать? Очевидно, вы не хотите, чтобы ваш код выполнял строковые сравнения с текстом каждого сообщения. Это неудобно и хрупко.

Некоторые решения, которые я видел, включают префикс строки с идентификатором сообщения, например, M123, поэтому ваш код обработки может читать этот идентификатор и определять, как обрабатывать строку. Это кажется менее желательным, потому что вам нужно отслеживать уже идентифицированные идентификаторы сообщений и т. Д.

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

Robot инициализация 1 старт Робот 1 ждет SSH ответ Робота 2 запуска инициализации Robot 4 инициализация завершена Robot 3 не удалось ответить в течение тайм-аута Robot 1 закрываются ...

Через некоторое время вы понимаете, что в дополнение к журналу текстуальное прокруткой, вы хотели бы, чтобы наглядно показать, какое-то представление каждый робот, возможно, окно с флажком для каждой важной вехи, которая может произойти в его жизни , Это было бы более полезным альтернативным пользовательским интерфейсом.

Например, вы хотите показать флажок, когда робот успешно запустился, и когда он успешно выполнил свою задачу и так далее.

Вопрос в том, как этот новый «вид» интерпретирует текущие сообщения, исходящие от вашего приложения, чтобы он знал, что они «означают», и может их обработать? Например, если представление хочет показать индикатор для робота, который завершил инициализацию, должен ли он выполнять сравнение строк с сообщениями журнала, которые ищут текст «Завершение инициализации робота N»? Это кажется хрупким, поскольку однажды вы можете настроить текст сообщения журнала.

Одним из вариантов может быть префикс эмиссии каждого сообщения журнала с уникальным неизменяемым идентификатором сообщения, например, «M24 Robot 1 завершил инициализацию». Таким образом, новый взгляд просто анализирует M24 и знает, что означает «завершение инициализации».

+0

Это довольно расплывчатым и абстрактным. можете ли вы показать нам конкретный пример того, что вы 're talk about? –

+0

[KeyValuePair] (https://msdn.microsoft.com/en-us/library/5tbh8a42%28v=vs.110%29.aspx) –

+0

Выйти на лимите b здесь ... пытаетесь ли вы связать число (код ошибки) с зарегистрированными сообщениями?С целью создания уникальных кодов ошибок, а также статических значений, которые не меняются между компиляциями? – Anssssss

ответ

1

В этом случае я вижу один простой класс с двумя реквизитами ... один строковый и другой идентификатор, и мне нужно сохранить его в памяти ... »В режиме выполнения пользователь видит только свойство строки, но программно я получаю доступ к объявлению скрытое свойство ... для того, чтобы препровождать этот класс в простой строки, вы можете переопределить ToString Митос ...

, например

public class Message 
{ 
    public void int MessageId {get; set;} 
    public void string UserMessage {get; set;} 

    public override string ToString() 
    { 
     return UserMessage; 
    } 
} 
+1

Это очень близко к тому, что я думал. Я не могу придумать лучшего способа, но он кажется менее идеальным. Я подумал, что, возможно, у нашей отрасли была лучшая модель для классификации строковых объектов, чтобы сделать их более легко узнаваемыми для кода. –

Смежные вопросы