讓我們假設我有一個如何讓.NET知道我有一個正確的類的實例?
Class ViewerManager(Of ViewTable)
和裏面我有一個
Protected ReadOnly Property StoredView As ViewTable
具有Get
裏面,我有這樣的事情
#Region "View Object Properties"
Enum ViewerManagerTemplate
Unkown = 1
TblMemorizedFilterPage = 2
TblMemorizedAEV = 3
End Enum
Protected _ManagerTemplate As ViewerManagerTemplate = ViewerManagerTemplate.Unkown
Protected ReadOnly Property ManagerTemplate As ViewerManagerTemplate
Get
If _ManagerTemplate = ViewerManagerTemplate.Unkown Then
If PageID > 0 Then
_ManagerTemplate = ViewerManagerTemplate.TblMemorizedFilterPage
Else
_ManagerTemplate = ViewerManagerTemplate.TblMemorizedAEV
End If
End If
Return _ManagerTemplate
End Get
End Property
Protected InitializedStoredView As Boolean = False
Protected _StoredView As ViewTable = Nothing
Protected ReadOnly Property StoredView As ViewTable
Get
If Not InitializedStoredView Then
InitializedStoredView = True
Select Case ManagerTemplate
Case ViewerManagerTemplate.TblMemorizedFilterPage
If PageObject.StoredViewID > 0 Then
_StoredView = CType(CType(BOs.CustomGridBO.GetMemorizedFilterPage(PageObject.StoredViewID), Object), ViewTable)
End If
End Select
End If
Return _StoredView
End Get
End Property
#End Region
這裏,在該行的
_StoredView = CType(CType(BOs.CustomGridBO.GetMemorizedFilterPage(PageObject.StoredViewID), Object), ViewTable)
我知道BOs.CustomGridBO.GetMemorizedFilterPage
肯定會返回一個TblMemorizedFilterPage
實例,我確信如果這條線被執行,那麼ViewTable
也是TblMemorizedFilterPage
,因此雙CType
似乎對我來說是一個矯枉過正。我能以某種方式簡化嗎?
編輯:
由於在註釋部分一片混亂,我想我需要提供進一步的信息。 TblMemorizedFilterPage
和TblMemorizedAEV
都是類,具有相同名稱的枚舉值以這些類命名。
GetMemorizedFilterPage的返回值是什麼? –
它返回一個TblMemorizedFilterPage實例,而_StoredView是ViewTable的一個實例,在這種情況下意味着TblMemorizedFilterPage。 –
TblMemorizedFilterPage是枚舉中的一個值。如果GetMemorizedFilterPage返回一個枚舉,那就是爲什麼你不能直接轉換到ViewTable的原因。 –