好的,我知道你在想什么,"为什么写一个你不希望别人使用的方法?" 对?
好吧,简而言之,我有一个需要序列化为XML的类.为了XmlSerializer
实现它的魔力,该类必须具有默认的空构造函数:
public class MyClass { public MyClass() { // required for xml serialization } }
所以,我需要拥有它,但我不希望人们使用它,所以是否有任何属性可用于将方法标记为"不使用"?
我正在考虑使用Obsolete属性(因为这可以阻止构建),但这看起来有点"错误",还有其他方法可以做到这一点,还是我需要继续坚持下去?:)
好吧,我接受了基思的回答,因为我心里想,我完全同意.这就是我首先提出这个问题的原因,我不喜欢拥有过时属性的概念.
有是仍然是一个问题,而我们则是在智能感知被通知,理想情况下,我们想打破建立,那么,有没有办法做到这一点?也许创建一个自定义属性?
这里创建了更集中的问题.
您可以使用:
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
这样它就不会出现在Intellisence中.如果消费者仍然想要使用它,他们可以,但它不会被发现.
Keiths指出过度工程仍然有效.
如果一个类是[Serialisable]
(即可以根据需要在该地方复制),则需要无参数构造函数来进行反序列化.
我猜你想强制你的代码访问权限将属性的默认值传递给参数化构造函数.
基本上你说的XmlSerializer
是制作副本然后设置属性是可以的,但你不需要你自己的代码.
在某种程度上,我认为这是过度设计.
只需添加XML注释,详细说明需要初始化哪些属性(以及要做什么).
不要使用[Obsolete]
,因为它不是.保留真正弃用的方法.