我正在使用Composite Application Library编写.NET3.5, WPF应用程序.应用程序分为几个模块. 在基础架构模块中,我已经定义了NetworkNode对象.网络模块管理网络节点的集合,并使用XmlSerializer来存储/加
在基础架构模块中,我已经定义了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 …)