我有一个针对.NET Framework 4.5和Xamarin.Android等的PCL。
在PCL中,我正在按以下方式构造XmlSerializer:
XmlAttributeOverrides overrides = new XmlAttributeOverrides();
XmlAttributes overrideAttributes = GenerateOverrideAttributes(dType, pType, attr);
overrides.Add(dType, prop.Name, overrideAttributes);
_serializer = new XmlSerializer(tType, overrides);
在这里:
dType是一个名为UIVisibleNode的类,
pType是一个名为UINode的抽象类,
prop.Name是“ Children”,它引用的是UIVisibleNode的属性
List<UINode>
在GenerateOverrideAttributes()内,我为每个继承自UINode的类创建一个具有XmlElementAttribute的XmlAttributes。
当我运行一个使用PCL的Windows项目时,XmlSerializer可以按照我想要的方式使用以下XML:
<layout width=".25" height =".25" x="0" y="0" id="portrait" class="render">
<background color="white">
<div x=".03" y=".05" width=".94" height =".9" layout="proportional_rows" paddingX=".01" paddingY=".02">
<background color="black">
</background>
<background color="gray" multiplier="3" padding=".1">
<label color="white" font="emulogic.ttf" fontSize="15">Test UI</label>
</background>
<br brSize="1" />
<background class="back,Lab" color="green">
<label class="Lab" color="white" font="emulogic.ttf" fontSize="15">GREEN</label>
</background>
<background color="red">
<label class="Lab" color="white" font="emulogic.ttf" fontSize="15">RED</label>
</background>
<background color="blue">
<label class="Lab" color="white" font="emulogic.ttf" fontSize="15">TLUE</label>
</background>
<background color="blue">
<label class="Lab" color="white" font="emulogic.ttf" fontSize="15">BLUE</label>
</background>
</div>
</background>
</layout>
这意味着当我反序列化XML时,我得到一个UILayoutNode类(继承UIVisibleNode),反序列化的UILayoutNode具有“ Children”属性,其中包含一个UIBackground类,其子级是单个UIDiv类,该类具有6个UIBackgrounds和1个UIBr作为它的孩子(等)
但是,当我使用PCL的Xamarin.Android项目尝试反序列化相同的XML时,所得的UILayoutNode没有子级。
我已经四处搜寻,但似乎无法找到更多相关信息,除了以下内容:https://github.com/xamarin/Xamarin.Forms/issues/2542
我是否认为这是无法在android方面实现的功能?还是我在这里还缺少其他见解?