2009-07-23 63 views
1

我可以依靠這樣一個事實,名爲Foo的屬性的基礎字段被稱爲「k__BackingField」?是在規範中實現自動屬性?

+0

Re Hessian;爲什麼它關心字段名稱?屬性名稱會更合適,不是?如果沒有,也許發明一個屬性來命名該成員,即[Hessian.Storage(「foo」)] public int Foo {get; private set;} – 2009-07-23 13:23:47

+0

我寧願只實現名字的封鎖( k__backingField - - > Foo) - 在客戶端更容易。 – ripper234 2009-07-23 13:30:42

+0

[自動屬性問題]的可能重複(http://stackoverflow.com/questions/371398/problems-with-auto-properties) – nawfal 2013-06-03 18:13:46

回答

0

當然不是。這將是一個專用實施細節。

爲什麼要在地球上想要知道?

0

我不這麼認爲。如果您需要後臺字段,請使用「常規」屬性。

2

該規範沒有指定後臺字段的名稱(有很好的理由 - 你不應該依賴它)。

您應該進行調查以瞭解Mono編譯器是否執行相同的操作。

完整性檢查該字段已應用CompilerGeneratedAttribute將是一個好主意。

需要注意的是顯式接口實現會出來(目前)爲:

<Full.Namespace.To.Interface.IBlah.Foo>k__BackingField 

所以代碼試圖序列化類的特定方面以這種方式可以誤導。

如果你想成爲真正的代碼和大括號,你可以使用類似於Cecil的庫來檢查屬性的get函數並確定使用的字段。