gpt4 book ai didi

c# - 将无参数构造函数的使用限制为序列化/Activator/new()

转载 作者:太空狗 更新时间:2023-10-29 23:21:03 25 4
gpt4 key购买 nike

我脑子里一直有下面的问题,找不到关于SO的问题:

如何让我的默认构造函数用于序列化/激活器目的,同时确保不鼓励/禁止消费者使用它?

过去我使用过这样的提示

///<summary>
/// Do not use the default constructor
///</summary>

这些显然很容易被忽视,除非您仔细悬停并检查您使用的每个类。

虽然我会像这样获得更好的视觉指示:

[Obsolete("Do not use the default constructor")]

这将是对该功能的完全滥用,让我不寒而栗。

有什么我不知道的常用方法来处理这个问题,还是只有我一开始就对此感到恼火?

最佳答案

如果您的类在类库中,并且序列化发生在类库本身,您可以创建一个internal 包装类(派生自您的原始类)来公开序列化构造函数。通过这种方式,您可以确保没有任何外部对象在调用该构造函数。使用这种方法,您必须在反序列化时使用该包装器类型。

当然,这仍然意味着可以从类库内部调用构造函数,但它可以防止大多数意外使用。

关于c# - 将无参数构造函数的使用限制为序列化/Activator/new(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37110935/

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