2

有2个项目。两者都是 WPF 应用程序。 应用程序错误

应用1:只提供与外部硬件的互通。为此,Application 根类中有一些公共共享类:

Public Shared Log As New clsLog
Public Shared NavigationObjectContainer As New Dictionary(Of String, Object)

第二个项目主要是GUI,也在Application根类中使用了一些公共共享类:

Public Shared Nav As New clsNavigationHelper

现在,第二个项目(GUI)引用了项目 1(硬件)并显示以下错误:

Der Typeninitialisierer für "TB_HyperTerminal.Application" hat eine Ausnahme verursacht。它是德语,但这意味着 1 类(硬件)中的应用程序对象无法找到所有共享类(如 clsLog 和 NavigationObjectContainer)。

内部异常

{"Das Objekt des Typs "FSCANT3.Application" kann nicht in Typ "TB_HyperTerminal.Application" umgewandelt werden."}

我的问题是如何解决这个问题以获得每个项目的正确程序和正确的应用程序对象。

在寻找原因时,我已将项目 2(硬件)的类重命名为 TBHApplication,而项目 1 仍称为 Application。不,我们可以看到为什么无法进行投射: 应用程序铸造

4

2 回答 2

0

是否有任何应用程序 1 的依赖程序集您没有复制到第二个项目的输出目录?

在下面的评论中讨论后更新。

据我了解您的问题,您希望 app1 能够使用 app2 中的方法。为此,您需要在 2 个应用程序之间建立一个通用接口。创建第三个项目(类型为“类库”),其中包含一个接口,该接口定义了应用程序 1 所需并由应用程序 2 实现的所有方法。app1 和 app2 都将引用这个新的 DLL。您可以在您的 app2 应用程序对象中实现此接口,然后 app1 可以将当前应用程序对象转换为此接口类型并调用方法。但是,我不确定我是否了解 app1 如何在独立模式下工作(这需要吗?如果不需要,app1 也不应该是类库吗?)。

请注意,使用应用程序类进行这种通信有点特殊。通常的方法是使用 IoC 容器或只是 app1 中的一个属性,其中 app2 可以设置接口的实现。

于 2012-09-20T12:15:05.307 回答
0
Dim AppInfo As Global.Microsoft.VisualBasic.ApplicationServices.AssemblyInfo = GetApplicationInfo()


    Private Function GetApplicationInfo() As Global.Microsoft.VisualBasic.ApplicationServices.AssemblyInfo
        Dim ret As Global.Microsoft.VisualBasic.ApplicationServices.AssemblyInfo = Nothing
        Try
            Dim asm As System.Reflection.Assembly = System.Reflection.Assembly.GetEntryAssembly
            ret = New Global.Microsoft.VisualBasic.ApplicationServices.AssemblyInfo(Global.System.Reflection.Assembly.GetExecutingAssembly())
        Catch ex As Exception
        End Try
        Return ret
    End Function


 Private Function GetApplication() As Global.System.Windows.Application
        Dim ret As Global.System.Windows.Application = Nothing
        Try
            ret = CType(Global.System.Windows.Application.Current, Global.System.Windows.Application)
        Catch ex As Exception
        End Try
        Return ret
    End Function
于 2012-09-20T15:11:06.373 回答