InvalidCastException: Wartość nie jest zamienny obiektu: system.string do IdTag
podczas próby deserializować atrybut xml.
Poniżej xml próbki:
<?xml version="1.0" encoding="windows-1250"?>
<ArrayOfItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Item Name="Item Name" ParentId="SampleId" />
</ArrayOfItem>
Przykładowe klas:
public class Item
{
[XmlAttribute]
public string Name { get; set; }
[XmlAttribute]
public IdTag ParentId { get; set; }
}
[Serializable]
public class IdTag
{
public string id;
}
jest wyjątek od Convert.ToType()
metody (który nazywa się z XmlSerializer
). AFAIK nie ma sposobu na "implementację" interfejsu IConvertible
dla System.String
do konwersji na IdTag
. Wiem, że mogę zaimplementować właściwość proxy, to jest:
public class Item
{
[XmlAttribute]
public string Name {get; set;}
[XmlAttribute("ParentId")]
public string _ParentId { get; set; }
[XmlIgnore]
public IdTag ParentId
{
get { return new IdTag(_ParentId); }
set { _ParentId = value.id; }
}
}
Czy istnieje inny sposób?
Zdecydowanie ulepszenie - przenosi 'nowy IDTag (..)' z gettera na własny konstruktor klasy. Dzięki. –