重写 WCF DataMember 的字典构造函数
是否可以指定 WCF 序列化引擎在反序列化数据成员时使用哪个构造函数?
例如:我想使用这个构造函数制作一个不区分大小写的字典,而不需要创建一个继承自Dictionary的新类。
[DataMember]
Dictionary<string, string> Values { get; set; }
// Values should be created with this constructor
new Dictionary<string, string>(StringComparer.InvariantCultureIgnoreCase);
Is it possible specify which constructor the WCF serialization engine uses when deserializing a data member?
For example: I want to use this constructor to make a case-insensitive dictionary without creating a new class that inherits from Dictionary.
[DataMember]
Dictionary<string, string> Values { get; set; }
// Values should be created with this constructor
new Dictionary<string, string>(StringComparer.InvariantCultureIgnoreCase);
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果您提供属性 setter 方法的实现,则可以为自己实例化新的不区分大小写的 Dictionary 实例,该实例将作为属性的值,并且只需将序列化程序提供的实例中的项目复制到其中作为
value
参数。如果序列化字典的源区分大小写,您需要准备好处理由于键冲突而导致的任何异常。
If you provide an implementation of your property setter method, you can instantiate for yourself the new case-insensitive Dictionary instance which will be the value of the property, and just copy into it the items from the instance provided by the serializer as the
value
parameter.You'll need to be prepared to handle any exceptions due to key clashes if the source of the serialized Dictionary was case-sensitive.
不,不是,除非您使用实现自定义序列化。
No it isn't, unless you use implement your custom serialization.