【发布时间】:2019-01-30 01:30:47
【问题描述】:
我有如下声明:
string city = HandleTypeString(address.City, tokenParams);
address.City = city; //"_rv!9yfEEZy";
handleTypeString 返回带有随机特殊字符的字符串(_rv!9yfEEZy)。当我将值保存在city 变量中时,它包含handleTypeString 返回的所有内容,但是当我将它分配给address.city 时,它变成rv9yfEEZy 丢失特殊字符。我需要在属性中存储确切的值。如何在分配时保留原始值?
编辑: 我发现属性设置器正在删除这些特殊字符的问题。 公共字符串城市 { 得到 { 返回 this._City; } 设置 { this._City = value.RemoveDiacritics().RemoveSpecialCharacters(); } }
我的代码随机失败,因为加密值并非每次都包含特殊字符。感谢大家建议检查属性定义。
【问题讨论】:
-
你能说明
address.City的作用以及它是如何在类中定义的吗? -
该类是在我的项目引用的程序集中定义的。它如下所示: [DataMember(EmitDefaultValue = false, Name = "City")] [XmlElement("City", Form = XmlSchemaForm.Unqualified)] public string City { get { return this._City; } 设置 { this._City = value.RemoveDiacritics().RemoveSpecialCharacters(); } }
-
很确定问题出在 setter 中的
value.RemoveDiacritics().RemoveSpecialCharacters();... -
感谢您的帮助。我无法更改城市财产的定义方式。不幸的是,我仍然需要按原样存储原始值,因为该值是原始可读格式的加密值。我需要它从加密转换回原始值。
-
如果你想“按原样”使用它,你需要将它转换成可以存储在那里的东西,比如 Base-32,然后在你读出来的时候再转换回来.