7
我不明白這個引用另一種類型的‘System.Collections.Generic.List`1 [CES.Model.SearchResult]’,以及如何解決這個問題。無法投類型的對象System.Collections.Generic.List`1
Unable to cast object of type 'System.Collections.Generic.List`1[CES.Model.SearchResult]' to type 'CES.Model.SearchResult'.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.InvalidCastException: Unable to cast object of type 'System.Collections.Generic.List`1[CES.Model.SearchResult]' to type 'CES.Model.SearchResult'.
Source Error:
Line 1069: XmlSerializer xs = new XmlSerializer(typeof(SearchResult));
Line 1070: TextWriter textWriter = new StreamWriter(@"C:\temp\results.xml");
Line 1071: xs.Serialize(textWriter, results);
Line 1072: ViewState["eventList"] = textWriter.ToString();
Line 1073: textWriter.Close();
這裏是searchResult類,它包含SearchResultAttribute類。
public class SearchResult
{
private List<SearchResultAttribute> _attributes = null;
private List<SearchResult> _linkedSearchResults = null;
public string this[string key]
{
get
{
int resultIndex = _attributes.BinarySearch(new SearchResultAttribute(key, ""));
if (resultIndex < 0)
return "";
else
return _attributes[resultIndex].Value;
}
set
{
int resultIndex = _attributes.BinarySearch(new SearchResultAttribute(key, ""));
if (resultIndex < 0)
return;
else
_attributes[resultIndex].Value = value;
}
}
public List<SearchResultAttribute> Attributes
{
get
{
return _attributes;
}
set
{
_attributes = value;
}
}
public List<SearchResult> LinkedSearchResults
{
get
{
return _linkedSearchResults;
}
set
{
_linkedSearchResults = value;
}
}
public SearchResult()
{
_attributes = new List<SearchResultAttribute>();
_linkedSearchResults = new List<SearchResult>();
}
}
public class SearchResultAttribute:IComparer<SearchResultAttribute>,IComparable<SearchResultAttribute>
{
public string Key { get; set; }
public string Value { get; set; }
public SearchResultAttribute()
{
Key = System.String.Empty;
Value = System.String.Empty;
}
public SearchResultAttribute(string key, string value)
{
Key = key;
Value = value;
}
public int Compare(SearchResultAttribute x, SearchResultAttribute y)
{
return (x.Key.CompareTo(y.Key));
}
public int CompareTo(SearchResultAttribute other)
{
return this.Key.CompareTo(other.Key);
}
}
謝謝你的時間。
史蒂夫,你可能想解釋爲什麼你使用List反對他試圖將其轉換爲SearchResult。這可能會幫助他認識到,在他的情況下投射應該是相同類型的......他將私人變量定義爲List <> + 1給你 –
MethodMan
2012-07-12 21:59:26
謝謝Steve B.另一個我沒有仔細閱讀錯誤信息的例子。 – greg 2013-10-20 17:08:47