0
我知道你不能使用接口序列化/反序列化,但我很困惑我看到的行爲。XmlSerialization和接口
當我反序列化並轉回到接口時,某些屬性爲null。但是如果我回到具體類型,相同的屬性有一個值?
因此,鑑於這種XML(簡稱爲簡潔起見):
<Page>
<ComponentPresentations>
<ComponentPresentation>
<Component>
<Categories>
<Category>
<Id>tcm:35-540-512</Id>
反序列化與
var serializer = new XmlSerializer(typeof(Page));
page = (IPage)serializer.Deserialize(reader);
page.ComponentPresentations[0].Component.Categories <-- is null
但是,如果我投回型,
var serializer = new XmlSerializer(typeof(Page));
page = (Page)serializer.Deserialize(reader);
page.ComponentPresentations[0].Component.Categories <-- is not null!
頁類型暴露了接口Categories屬性和一個非接口屬性 - 我假設要繞過序列化接口王牌問題。
public List<Category> Categories { get; set; }
[XmlIgnore]
IList<ICategory> IComponent.Categories
{
get { return Categories as IList<ICategory>; }
}
這是因爲接口屬性不公開setter?
很好的答案!現在就閱讀關於逆變的內容! – Neil 2012-04-11 15:58:27
@Neil使用IEnumerable'會給你你需要的功能。 –
Aliostad
2012-04-11 16:07:13