2012-04-05 27 views
1

我使用massive.cs作爲DAL,但我創建了具有其子項的列表的模型。如何防止Type.GetProperties()訪問對象中的屬性

問題是我找不到一個很好的方法來從GetProperties()隱藏這些。大量使用它來創建expando對象,並且在不進行大量編輯的情況下,我想不出隱藏這些特性的好方法。有沒有屬性或類似的東西?

+0

重要的部分是哪些部分仍然需要訪問它。即你的其他代碼是否仍然使用這些屬性,它是否在lib等內部。 – NSGaga 2012-04-05 17:54:47

+0

屬性需要公開,但GetProperties()不可見。內部幾乎可以工作,但我仍然需要訪問ASPX頁面中的屬性。 – 2012-04-05 17:56:07

回答

4

海量使用the overload of GetProperties() that takes no parameters (massive.cs:76)。根據文檔,該方法「返回當前類型的所有公共屬性」。

此外,「如果某財產至少有一個公開訪問者,則該財產被視爲公開反思。」所以只要確保getter和setter是私有的,或者是明確的接口實現。

+0

問題是如果我讓它內部(它允許我在我的應用程序的其餘部分訪問),我失去了在ASPX頁面中使用它的能力,但它不是從GetProperties中獲取的......這就是我所說的「現在正在做。 – 2012-04-05 17:53:28

+0

然後按照我的建議讓它成爲一個明確的接口實現。顯式接口獲取器和設置器不應該通過Massive正在使用的方法公開。 – 2012-04-05 17:55:59

+0

原因是因爲即使它們通過接口公開,Default綁定標誌只獲取聲明的屬性? – 2012-04-05 18:05:38

2

這聽起來像你試圖隱藏一些代碼?如果是這樣,你必須改變你的修飾符internalprivate從我認爲是public。否則,你可以添加一個密鑰,以使你的代碼不能被他人通過混淆使用......但是,根據我所知,沒有完美的方式來隱藏你的代碼...