.net настраиваемые сообщения об ошибках бизнеса - PullRequest
3 голосов
/ 11 июня 2010

Мне нужно реализовать какое-то решение, чтобы на уровне нашей бизнес-логики при определенных условиях возвращалось сообщение об ошибке.

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

Я видел, как это делалось раньше несколькими способами, и это всегда заканчивалось чем-то вроде «Это сообщение об ошибке {0}», а затем, когда разработчик использует сообщение, они не знают, сколько (если есть) параметров сообщение необходимо.

Просто надеясь использовать что-то, что, возможно, уже было сделано, я не думаю, что есть поставщик или что-нибудь еще в .net framework.

Ответы [ 2 ]

0 голосов
/ 11 июня 2010

Раствор;

Храните ваши сообщения об ошибках с именными заполнителями, как это;

  • "Это ошибка {name1}. Andkg kfkjgkf {name2}"
  • "это какая-то проблема"

Затем вам нужен класс, который принимает в своем конструкторе необработанное сообщение об ошибке типа "это проблема некоторого размера".

Затем класс позволит разработчику указать значения для каждого из заполнителей.

Наконец, разработчик вызывает метод, который заменяет заполнители указанными значениями и возвращает результат.

т.е.

var rawMessage = "this is some {size} problem"; // fetch this from a file, db, or build runtime
var errorMessage = new ErrorMessage(rawMessage); // finds all the placeholders, stores them in a Dictionary<string, string>
errorMessage.SetPlaceholderValue("size", "big"); // sets the {size} placeholder value
var message = errorMessage.BuildErrorMessage(); // replaces placeholders with values and checks no values are missing

// message should look like "this is some big problem";
// this will handle any number of placeholders
0 голосов
/ 11 июня 2010

почему бы не сделать сообщение об ошибке свойством класса ошибок (при условии, что оно у вас есть), позволяя вашим разработчикам устанавливать свои собственные сообщения, возможно, событие, включающее несколько ваших собственных статических сообщений, и затем принимать параметр paramarray для вставкикак вторая часть вашей функции string.format.

кажется, что обойтись без знания, сколько параметров и т. Д.

...