Unable to apply object of type "System.Collections.Generic.List`1

I do not understand this link to another type "System.Collections.Generic.List`1 [CES.Model.SearchResult]" and how to solve this problem.

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(); 

Here is the searchResult class and it contains the SearchResultAttribute class.

 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); } } 

Thank you for your time.

+7
source share
1 answer

Maybe this will work:

 XmlSerializer xs = new XmlSerializer(typeof(List<SearchResult>)); 

In fact, the message allows me to think that xml contains a searchrestult collection, and not a single search result.

[Edit] DJ KRAZE is right, this code assumes that the variable "results" has the form List<SearchResult> . The serializer must match the type of object that will be serialized.

+9
source

All Articles