Получение ошибки при выдаче списка ошибок?

#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: Спасибо 🙂 Я забыл это 🙂