加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在C#中使用属性/接口的区别

发布时间:2020-12-15 19:36:42 所属栏目:百科 来源:网络整理
导读:这不是一个问题,但更像是我最近的想法. 我将XmlAttribute作为XmlSerialize类作为示例:您可以将属性设置为类以选择应该序列化哪些属性,但是通过实现一个teorical接口IXmlSerializable可以很容易地完成同样的事情(它确实存在类似的东西,我不记得了)并重载了一
这不是一个问题,但更像是我最近的想法.
我将XmlAttribute作为XmlSerialize类作为示例:您可以将属性设置为类以选择应该序列化哪些属性,但是通过实现一个teorical接口IXmlSerializable可以很容易地完成同样的事情(它确实存在类似的东西,我不记得了)并重载了一个方法“Serialize”,该类只调用了你要序列化的属性上的Serialize(this.myProp1.Serialize()),同样用于反序列化

所以我基本上说的是:属性方法有点多余吗? (我实际上喜欢它,但我发现它与界面在逻辑上并不相同)

谢谢你的回答,正如我所说,这只是一个想法…希望有人会发现它很有趣

更新1:我用错误的方式解释了自己,我问的是“为什么我应该选择属性而不是接口(或相反)”,不完全是这个特定情况(我采用序列化因为是流行的第一件事在我的脑海里),顺便感谢你的答案,因为他们非常有趣

解决方法

好吧,从我能说的最好的情况来看,它们在逻辑上是不同的.

实现IXmlSerializable会直接影响类本身,因为您要在类的实现中添加一个接口和一个或多个方法.从本质上讲,您正在为自己的班级负责任地制作自己的班级.

但是,添加XmlAttribute属性不会直接影响类的功能,而只是使用属性对其进行装饰,以便XmlSerializer可以执行实际的序列化功能.在这种情况下,您将序列化推迟到XmlSerializer类,并为XmlSerializer提供足够的有关您的类的元数据来完成它的工作.

这就是为什么我更喜欢后一种属性方法.当我写一个类时,我希望它是可序列化的,但我关心的最后一件事是实现的细节,所以我总是从thaqt方法开始,99%的时候它只用很少的工作就可以正常工作.但是,如果确实需要对序列化进行更细粒度的控制,请实现IXmlSerializable接口并编写自己的序列化代码.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读