2014-03-13 71 views
1

我想用C#實現一個簡單的sprite動畫框架。我有一些有getter和setter的類。對我來說,使用這個getters和setter是可以的,但是這個框架的用戶不應該看到並使用這個setter。我怎樣才能做到這一點?防止類的用戶使用setter

+0

使setter私人 –

+0

@ratchetfreak但我使用這個setter。 – Cem

回答

10

檢出internal輔助功能修飾符,類似於publicprivate,但允許訪問修改後的屬性僅用於編譯爲相同程序集的一部分的代碼。你只能在setter上指定它,就像使用private一樣。

public string MyProperty {get; internal set;} 

當然,這並不完美。如果你自己的框架由幾個組件組成,他們也會遇到可訪問性問題。一種選擇是相應地構建解決方案。另一種方法是使用InternalsVisibleTo屬性,該屬性允許程序集顯式地將外部程序集命名爲「朋友」,從而允許其訪問其成員的internal

+0

假設我不會在另一個項目中使用此setter,內部將解決我的問題。我理解正確嗎? – Cem

+0

是的。我發佈的(更新的)代碼片段將允許任何人訪問getter,並且只通過編譯在同一個DLL/EXE中的代碼來設置setter。 –

1

我很喜歡使用顯式接口來處理這種情況......但是如果框架包含在一個單獨的程序集中,「內部」顯然會完成這項工作。