Fir*_*DoL 3 c# attributes interface
这不是一个问题,但更像是我最近的想法.我将XmlAttribute作为XmlSerialize类作为示例:您可以将属性设置为一个类来选择应该序列化哪些属性,但是通过实现一个teorical接口IXmlSerializable可以很容易地完成同样的事情(它确实存在类似的东西,我不记得了)并重载了一个方法"Serialize",该类只调用了你要序列化的属性上的Serialize(this.myProp1.Serialize()),同样用于反序列化
所以我基本上说的是:属性方法有点多余吗?(我实际上喜欢它,但我发现它与界面在逻辑上并不相同)
谢谢你的回答,正如我所说,这只是一个想法...希望有人会发现它很有趣
更新1:我以错误的方式解释自己,我问的是"为什么我应该选择属性而不是接口(或相反)",不完全是这个特定情况(我采取序列化因为是第一个流行的东西在我的脑海里),顺便感谢你的答案,因为他们非常有趣
从意见和downvote,也许我应该强调我的主要点的位置:东西可以救我小时的工作(每类)和可怕的代码的复杂性是非常不多余,而且非常,非常受欢迎.
"很容易"?好; 我在序列化方面很有经验,但实现并不是我所说的那么简单.事实恰恰相反.
如果您不想使用属性,则会有一个重载XmlSerializer,允许您在运行时配置它.
但每当我听到"执行IXmlSerializable" 时,我都会不寒而栗.属性方法非常快速简便:
[XmlRoot("foo"), XmlType("foo")]
[XmlInclude(typeof(SuperFoo))]
public class Foo {
public string X {get;set;}
[XmlAttribute("y")]
public int? Y {get;set;}
[XmlElement("item")]
public List<string> Items {get;set;}
}
public class SuperFoo : Foo {}
Run Code Online (Sandbox Code Playgroud)
我挑战你在2小时内为这个非常简单的例子编写一个强大的实现...并记住你写的每一行都是你必须维护的一行.IXmlSerializable
| 归档时间: |
|
| 查看次数: |
239 次 |
| 最近记录: |