Я хочу написать определенный пользователем класс сбора ошибок, который должен собирать все ошибки. Когда мы проверяем объект сущности, если нет ошибки, он должен пойти и сохранить в базе данных. если ошибка там, он должен отобразить это.
теперь, когда я написал класс, он собирает ошибку и успешно ее отображает, но при наличии двух идентичных ошибок класс создает исключение.
(Я использую код ошибки для ошибки. Значение для кода ошибки находится в файле resx, откуда метод отображения примет значение и отобразит его. Дисплей работает отлично)
//The code where it collects Error
if (objdepartment.Departmentname == null)
{
ErrorCollection.AddErrors("A1001","Department Name");
}
if (objdepartment.Departmentcode == null)
{
ErrorCollection.AddErrors("A1001","Department code");
}
//In the Errorcollection
public class ErrorCollection
{
static Dictionary<string,List<string>> ErrorCodes;
private ErrorCollection() { }
public static void AddErrors(string eCode,params string[] dataItem)
{
if (ErrorCodes == null)
{
ErrorCodes = new Dictionary<string, List<string>>();
}
List<String> lsDataItem = new List<String>();
foreach (string strD in dataItem)
lsDataItem.Add(strD);
ErrorCodes.Add(eCode, lsDataItem);
}
public static string DisplayErrors()
{
string ErrorMessage;
//string Key;
ErrorMessage = String.Empty;
if (ErrorCodes != null)
{
string Filepath= "D:\\Services\\ErrorCollection\\";
//Read Errors- Language Specsific message from resx file.
ResourceManager rm = ResourceManager.CreateFileBasedResourceManager("ErrorMessages", Filepath, null);
StringBuilder sb = new StringBuilder();
foreach (string error in ErrorCodes.Keys)
{
List<string> list = ErrorCodes[error];
if (error == "A0000")
{
sb.Append("System Exception : " + list[0]);
}
else
{
sb.Append(rm.GetString(error) + "\nBreak\n");
}
for (int counter = 0; counter < list.Count; counter++)
{
sb.Replace("{A}", list[counter]);
}
}
ErrorMessage = sb.ToString();
}
return ErrorMessage;
}
}
теперь, когда есть две распространенные ошибки. затем код показывает исключение типа «ключ данных уже существует» в строке «ErrorCodes.Add (eCode, lsDataItem) ;» (курсив, где выдается исключение)