gpt4 book ai didi

c# - 强制仅从序列化调用的构造函数

转载 作者:行者123 更新时间:2023-11-30 22:36:58 25 4
gpt4 key购买 nike

在我们的代码库中,任何需要保存的类都是 IXmlSerializable,这意味着它们都有公共(public)无参数构造函数。

这个问题是,我必须在每个“仅用于序列化目的”上方加上注释,因为这些实例上的某些成员是私有(private)的并且是必需的,因此在调用所有“可用”构造函数时是必需的。

真正好的说法是“此构造函数只能由序列化代码/程序集调用,否则我会爆炸”。任何人都知道是否有一个很好的方法来做到这一点?我能想到的唯一方法是检查调用堆栈,为什么听起来太贵了……

最佳答案

怎么样:

    [Obsolete("Is your name XmlSerializer? No, I didn't think so.", true)]
public Foo() { }

注意:这不会保护您免受反射或带有 where T : new() 约束的泛型,但它避免了更有可能的 新的 Foo() 场景。

关于c# - 强制仅从序列化调用的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6744896/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com