如何在WPF应用程序中访问“My.Application”?

时间:2011-11-11 13:13:18

标签: .net wpf vb.net

我打电话给我的WPF应用程序 My.Application检查其My.Application.Info.Version

但现在我需要在另一个WPF项目中显示GUI,创建一个新的WPF项目并包含我现有的WPF类。现在出现错误:

  

Das Objekt des Typs OUTPUT_ _ICAO_WPF.Application kann nicht in Typ   DSP_ _MaskSelektor_WPF.Application umgewandelt werden。

这意味着:无法从WPF应用程序编号转换为目标的WPF应用程序。

是否存在不覆盖“旧”WPF项目(不更改旧项目)的解决方案,因为我希望将“旧”类作为子项包含在其他几个应用程序中。我想在全球范围内进行检查或转换以获得该版本。

非常感谢您的帮助 此致

1 个答案:

答案 0 :(得分:0)

问题是My.Application实际上包含以下自动生成的代码:

        Return CType(Global.System.Windows.Application.Current, Application)

其中Application是项目命名空间中自动生成的类。

这意味着,如果您从Project_1中调用Project_2中的My.Application,则会收到投射错误。这是因为System.Windows.Application.Current将返回Project_1,但由于该方法正在Project_2中执行,因此数据类型为Project_2.Application,无法转换为Project_1.Application

但是,有一个简单的解决方法:向Project_2添加一个方法以返回当前程序集的版本。我通常采用的方法是在程序集中创建一个静态/共享类,如下所示:

Public Class Version
    Public Shared ReadOnly Property Value() As System.Version
        Get
            Return System.Reflection.Assembly.GetAssembly(GetType(Version)).GetName.Version()
        End Get
    End Property
End Class

这是有效的,因为我们在Project_2程序集中获取Version类的类型,然后获取程序集详细信息并从程序集中返回System.Version。

然后,在Project_1中,您可以通过调用Project_2.Version.Value来获取该版本。

希望这会对你有帮助。