【问题标题】:Dependencies & Xml Serialization依赖和 XML 序列化
【发布时间】:2011-08-01 18:59:28
【问题描述】:

在我目前工作的个人应用程序中,我有全局应用程序设置,这应该会影响某些对象的行为方式,就架构而言,我认为它会创建一个不必要的依赖关系来直接引用它们,例如

public void Update()
{
    if (App.Settings.AutoCacheImages) CacheImages();
    ...
]

所以我更喜欢创建这样的界面:

public interface IFeedSettings
{
    bool AutoCacheImages { get; set; }
    ...
}

并确保我的对象在构造过程中获得引用:

private IFeedSettings _settings;

public Feed(IFeedSettings settings)
{
    _settings = settings;
}

现在的问题是 Xml-Serialization 需要一个无参数的构造函数,那么解决这个问题的最佳方法是什么,以便在反序列化后 Feed 的所有实例都引用我的全局设置?

我有一个使用复合模式的分层文件夹/类似文件的数据结构

【问题讨论】:

  • 您是否考虑过为序列化制作特定模型,然后使用 AutoMapper 之类的东西从您的实体映射到您的模型?
  • @Tejs:如果你能详细说明一下,我将不胜感激,因为我不知道你在说什么。
  • Xml序列化的主题是什么对象?设置还是 Feed?
  • @qes:提要。 (设置也被序列化,但它们没有任何依赖关系,它只是一个实例,因此如果有的话,恢复它们不会很麻烦)
  • 反序列化该接口可能会遇到一些麻烦:stackoverflow.com/questions/1333864/…

标签: c# architecture xml-serialization dependencies


【解决方案1】:

澄清:

您拥有Feed 类型的对象。你想序列化它,但你不能使用非默认构造函数。相反,您可以创建一个FeedModel,为您要发送的所有数据使用一个无参数的构造函数和公共属性。然后,您可以使用AutoMapper 将数据从您的Feed 实例快速传输到FeedModel 实例并序列化模型类。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-12
    • 2014-04-30
    • 1970-01-01
    相关资源
    最近更新 更多