0
我試圖創建一個使用自定義網格(子類)的控件(父類)。網格有一系列基於[parent]控件中屬性值填充的構造函數和方法。可以訪問父屬性的私人子類型
我發現使這些屬性值可用於網格的唯一方法是讓它們爲Shared
,但這導致我所有類型的問題。
要求
- 在控制(父)屬性必須是網格(子)訪問。
- 控件中的屬性必須在設計時屬性瀏覽器中可見。
- 網格類只能由父類實例化。
作爲備註:請指出您的答案是否允許我在孩子和父母之間來回共享屬性/方法。這將是很好的,但只是一個獎金。
感謝;)
編輯 - 根據我的情況很簡單的例子:
Partial Public Class catContent
Inherits System.Web.UI.UserControl
Protected Sub Page_Load(sender, e) Handles Me.Load
Page.Controls.Add(New CategoryResultGrid(category))
End Sub
Private Shared _product As String = String.Empty
Shared Property Product() As String
Get
Return _product
End Get
Set(ByVal value As String)
_product = value.Trim()
End Set
End Property
Private Class CategoryResultGrid
Inherits GridView
Sub New(ByVal category As String)
'How do I access "Product" here without sharing it?
End Sub
End Class
End Class
因此,鑑於上面我添加的例子,你會推薦什麼?很明顯,我想擺脫'共享'屬性,但是如何將「產品」暴露給我的內部類? – Chiramisu
當你說我可以引用父實例時,我最感興趣的是什麼?這絕對是我需要的,因爲我將在各種頁面上有多個這種控件的副本,所以內部網格絕對必須訪問它們各自的父實例屬性。 – Chiramisu
只要內部類有引用,內部類甚至可以訪問外部類的私有狀態。所以,如果你添加一個'catContent'類型的附加構造函數arg到'CategoryResultGrid',然後在創建它時傳遞'Me',那麼你應該全部設置。 – tcarvin