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

在C#中使用属性接口的区别,第1张

概述这不是一个问题,但更像是我最近的想法. 我将XmlAttribute作为XmlSerialize类作为示例:您可以将属性设置为类以选择应该序列化哪些属性,但是通过实现一个teorical接口IXmlSerializable可以很容易地完成同样的事情(它确实存在类似的东西,我不记得了)并重载了一个方法“Serialize”,该类只调用了你要序列化的属性上的Serialize(this.myProp1 这不是一个问题,但更像是我最近的想法.
我将XmlAttribute作为XmlSerialize类作为示例:您可以将属性设置为类以选择应该序列化哪些属性,但是通过实现一个teorical接口IXmlSerializable可以很容易地完成同样的事情(它确实存在类似的东西,我不记得了)并重载了一个方法“Serialize”,该类只调用了你要序列化的属性上的Serialize(this.myProp1.Serialize()),同样用于反序列化

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

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

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

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

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

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

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

总结

以上是内存溢出为你收集整理的在C#中使用属性/接口的区别全部内容,希望文章能够帮你解决在C#中使用属性/接口的区别所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1224494.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存