当前位置 : 主页 > 编程语言 > c语言 >

c# – 如何序列化附加属性

来源:互联网 收集:自由互联 发布时间:2021-06-25
我正在使用Composite Application Library编写.NET3.5, WPF应用程序.应用程序分为几个模块. 在基础架构模块中,我已经定义了NetworkNode对象.网络模块管理网络节点的集合,并使用XmlSerializer来存储/加
我正在使用Composite Application Library编写.NET3.5, WPF应用程序.应用程序分为几个模块.

在基础架构模块中,我已经定义了NetworkNode对象.网络模块管理网络节点的集合,并使用XmlSerializer来存储/加载此集合.到目前为止,每件事都有效.

但我有其他模块,例如NodeModule.如果在网络模块中选择了NetworkNode,则会使用EventAggregator将事件发布到其他模块.这些模块可以使用附加属性将各种信息附加到NetworkNode.

问题是NetworkModule不了解其他模块,因此这些属性没有被序列化.有可能以某种方式列出并序列化附加到对象的所有属性?或者我是否必须更改概念并使用除附加属性之外的其他内容?

问候

您可以使用 DependencyObject.GetLocalValueEnumerator列出在对象上定义的所有依赖项属性(附加或不附加):

LocalValueEnumerator propEnumerator = foo.GetLocalValueEnumerator();
    while (propEnumerator.MoveNext())
    {
        Console.WriteLine ("{0} = {1}",
                           propEnumerator.Current.Property.Name,
                           propEnumerator.Current.Value);
    }

但是,这对XML序列化没有帮助(除非你实现了IXmlSerializable,这很痛苦……).您应该使用XamlWriter(我假设是Drew所说的,因为没有XamlSerializer …)

网友评论