2011-04-12 141 views
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; 
    } 
} 

,但得到的錯誤,同時指派消息這份名單消息 任何人都可以幫助我做到這一點?

回答

2

Exception.Messagestring,不是List<string>,它的只讀,所以你必須通過構造鏈接到string傳遞給基類:

public class WorkFlowException : Exception 
{ 
    public WorkFlowException(List<string> messages) 
    : base(messages != null && messages.Count > 0 ? messages[0] : "") 
    { 
     //... 
    } 
} 

或者,您可以覆蓋Message property:

public class WorkFlowException : Exception 
{ 
    List<string> messages; 

    public WorkFlowException(List<string> messages) 
    { 
     this.messages = messages 
    } 

    public override string Message 
    { 
     get { return messages != null && messages.Count > 0 ? messages[0] : "" } 
    } 
} 
+0

而不是隻顯示列表中的第一條消息,我會將每個元素連接成單個字符串,以便您不會丟失任何在拋出異常時的消息。 – 2011-04-12 04:46:11

+0

OP最初在逗號分隔的字符串中有所有錯誤。你也可以有一個'Messages'屬性。 – 2011-04-12 04:47:29

1

Exception.Message是一個字符串。您正嘗試將List<string>分配給string屬性。 類型不匹配..在分配之前嘗試並將您的字符串列表格式化爲單個字符串。

更新(感謝馬克)
public WorkflowException(List<string> listOfMessages) : base(String.Join(",", listOfMessages.ToArray());

+0

base.Message is read-only – 2011-04-12 04:39:41

+0

@Mark - correct! :) – Gishu 2011-04-12 04:57:14

0

Exception.Message是字符串。不List<string>

+0

它是隻讀的 – 2011-04-12 04:39:06

+0

@Mark Cidade:謝謝:)我忘了:) – Anuraj 2011-04-12 04:40:35