簡體   English   中英

通過Activator.CreateInstance使用共享/靜態屬性

[英]Use shared/static Property with Activator.CreateInstance

我正在將.NET 2.0 WinForms應用程序升級到.NET 4.5.2,並且在此代碼塊上收到兩個警告:

Public Sub ShowFormAsMdiChild(ByVal newFormType As Type, _
                              ByVal mdiParentType As Type, _
                              Optional ByVal SearchID As String = "",
                              Optional ByVal curType As SearchType = SearchType.Residential)

    If SearchID = "" Then
        Dim F As Form
        F = CType(Activator.CreateInstance(newFormType), Form)
        F.MdiParent = CType(Activator.CreateInstance(mdiParentType), Form).ActiveForm
        F.Show()
    Else
        Dim F As Form
        Dim args(1) As Object
        args(0) = SearchID
        args(1) = curType

        F = CType(Activator.CreateInstance(newFormType, args), Form)
        F.MdiParent = CType(Activator.CreateInstance(mdiParentType), Form).ActiveForm
        F.Show()
    End If
End Sub

我在設置F.MdiParent的兩行上收到以下警告:

通過實例訪問共享成員,常量成員,枚舉成員或嵌套類型; 合格表達式將不被評估。

問題在於ActiveForm屬性是共享屬性,並且由於代碼正在創建Form的新實例,因此調用Form的共享屬性會導致警告。

有沒有更好的方法來實施而不發出警告? VB.NET中的首選答案,但是如果您只懂C#,我可以翻譯。

無需創建MDI父類型的新實例,然后將其轉換為Form ActiveFormForm類的共享屬性,因此您應該通過類名而不是實例來訪問它。

F.MdiParent = Form.ActiveForm

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM