我可以依赖名为 Foo 的属性的基础字段称为 "k__BackingField" 的事实吗?
问问题
459 次
4 回答
5
不,简而言之。
出于这个原因,自动属性在与基于字段的序列化程序一起使用时会很痛苦BinaryFormatter
(我相信我之前可能已经提到过;-p)。
请参阅:混淆、序列化和自动实现的属性,以了解对此(和解决方案)的一些想法。
于 2009-07-23T13:20:20.850 回答
3
规范没有指定支持字段的名称(有充分的理由 - 你不应该依赖它)。
例如,您应该调查一下 Mono 编译器是否做同样的事情。
检查该字段是否已CompilerGeneratedAttribute
应用的完整性将是一个好主意。
请注意,显式接口实现(当前)将出现:
<Full.Namespace.To.Interface.IBlah.Foo>k__BackingField
因此,试图以这种方式序列化类的特定方面的代码可能会被误导。
如果你想真正了解你的代码,你可以使用像 mono 的 Cecil 这样的库来检查属性的 get 函数并确定使用的字段。
于 2009-07-23T13:47:26.870 回答
0
当然不是。那将是一个私有的实现细节。
你到底为什么想知道?
于 2009-07-23T13:18:50.120 回答
0
我不这么认为。如果您需要支持字段,请使用“常规”属性。
于 2009-07-23T13:19:23.893 回答