#c# #c#-4.0
#c# #c #-4.0
Вопрос:
В моем проекте я выдавал список сообщений об ошибках
вот так
List<string> errorMessageList = errors[0].Split(new char[] { ',' }).ToList();
throw new WorkflowException(errorMessageList);
и мой класс WorkflowException выглядит следующим образом
/// <summary>
/// WorkFlowException class
/// </summary>
public class WorkFlowException : Exception
{
/// <summary>
/// Initializes a new instance of the WorkFlowException class
/// </summary>
/// <param name="message">Error Message</param>
public WorkFlowException(List<string> message)
{
base.Message = message;
}
}
но получает ошибки при назначении этого списка сообщений base.Сообщение
кто-нибудь может мне помочь это сделать?
Ответ №1:
Exception.Message
является string
, а не a List<string>
, и доступно только для чтения, поэтому вам нужно передать string
в базовый класс через цепочку конструкторов:
public class WorkFlowException : Exception
{
public WorkFlowException(List<string> messages)
: base(messages != null amp;amp; messages.Count > 0 ? messages[0] : "")
{
//...
}
}
В качестве альтернативы вы можете переопределить Message
свойство:
public class WorkFlowException : Exception
{
List<string> messages;
public WorkFlowException(List<string> messages)
{
this.messages = messages
}
public override string Message
{
get { return messages != null amp;amp; messages.Count > 0 ? messages[0] : "" }
}
}
Комментарии:
1. Вместо того, чтобы просто показывать первое сообщение в списке, я бы объединил каждый элемент в одну строку, чтобы вы не потеряли ни одно из сообщений при выдаче исключения.
2. В операционной системе изначально все ошибки содержались в строке, разделенной запятыми. У вас также может быть
Messages
свойство.
Ответ №2:
Исключение.Сообщение представляет собой строку. Вы пытаетесь присвоить List<string>
свойству string
. Несоответствие типов.. Попробуйте отформатировать свой список строк в одну строку перед назначением.
Обновлено (отметка с благодарностью)
public WorkflowException(List<string> listOfMessages) : base(String.Join(",", listOfMessages.ToArray());
Ответ №3:
Исключение.Сообщение является строкой. не List<string>
Комментарии:
1. @Mark Cidade: Спасибо 🙂 Я забыл это 🙂