繁体   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