2011-11-11 20 views
0

私はそのMy.Application.Info.VersionWPFアプリケーションで "My.Application"にアクセスするには?

をチェックする My.Applicationを呼び出すしかし、今、私は、別のWPFプロジェクトにGUIを表示するために必要な新しいWPFプロジェクトをcreatet、私の既存のWPFクラスが含まれWPFアプリケーションを持っていました。今すぐエラーoccours:

ダスObjektデTyps OUTPUT_ _ICAO_WPF.ApplicationカンNICHTのtyp DSP_ _MaskSelektor_WPF.Application umgewandelt werden。

意味:WPFアプリケーション番号1をターゲットのWPFアプリケーションにキャストできません。

"old"クラスを子としていくつかの他のアプリケーションに含めたいので、 "古い" WPFプロジェクトを上書きしないでください(古いプロジェクトは変更しません)。私は、バージョンを取得するためにグローバルにチェックまたはキャストしたいと思います。 Applicationは、プロジェクトの名前空間に自動的に生成されたクラスである

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

:kindfully任意の助け よろしく

答えて

0

ため

おかげで問題がMy.Applicationが実際に次のように自動的に生成されたコードで構成されていることです。

これは、Project_1からProject_2のMy.Applicationを呼び出すと、キャストエラーが発生することを意味します。これは、System.Windows.Application.CurrentがProject_1を返すためですが、メソッドがProject_2で実行されているため、データ型はProject_2.Applicationであり、Project_1.Applicationにキャストできません。

ただし、簡単な修正があります:現在のアセンブリのバージョンを返すためにProject_2にメソッドを追加します。私は通常これに近づく方法は、以下のようにアセンブリ内の静的/共有クラスを作成することです:私たちは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 

これは動作しますが、その後、アセンブリの詳細を取得し、アセンブリからSystem.Versionを返します。

Project_1では、Project_2.Version.Valueを呼び出してバージョンを取得できます。

うまくいけば、これが役に立ちます。

+0

すべて真実のように聞こえる。私はマイクロソフトから、既存のアプリケーションを反映するための既存のソリューションがあることを期待していました。今は動作しますが、アプリケーションのプロパティの要求ごとにラッパーが必要です。あなたの良い説明をありがとう! – Nasenbaer

関連する問題