2009-03-31 8 views
0

私はVB.NETに変換しようとしているいくつかのC#のコードがあります。私は各プロジェクトで参照しているいくつかの外部依存関係があります。 C#の行は、変換コードC#をVBに - 関数参照

TWriteFileCommand writeFile = (TWriteFileCommand)CommunicationLink.CreateCommand(TOPKernel.TCommand.CommandType.WriteFile); 

等号の後のパラメタのTWriteFileCommandがそのステートメント内のものであるかどうかは分かりません。私はVB.NETでそれをしようとすると、私はCreateCommand関数への参照を取得することはできませんので、エラーが発生し続けます。私が得ている最も近いが、このされています。しかし、私はそれが値を割り当てられた前のエラー「変数MyAppBaseが使用されているフラグ等号する@ MyAppBase後に緑の下線を持って

Dim MyAppBase As OPSupport.App.AppBase 
Dim writeFile As TWriteFileCommand 
writeFile = MyAppBase.CommunicationLink.CreateCommand(TOPKernel.TCommand.CommandType.WriteFile) 

null参照例外。実行時に発生する可能性があります。

私には何が欠けていますか?なぜC#コードでインスタンスが正常で、VB.NETで同等のインスタンスを取得する必要があるのですか?お知らせ下さい。

答えて

1

直接相当するものは次のとおりです。

Dim writeFile As TWriteFileCommand 
writeFile = DirectCast(CommunicationLink.CreateCommand(TOPKernel.TCommand.CommandType.WriteFile), TWriteFileCommand) 
+0

他は同様の回答をした人もいました。ありがとう。 –

4

これはキャストです。 CreateCommandobjectCommandBaseなどの場合は、TWriteFileCommandにタイプチェックします。

C#コードをコンパイルしている場合は、リフレクタを使用して変換できますか?これはドロップダウンのフリップでC#と同等のVBを示します。

MyAppBaseさんは何をしているのですか?それはC#には存在しませんでした - なぜそれをVBに追加しましたか?

編集私はVBを "しません"が、私はリフレクターでそれを探しました。 (Foo)barDirectCast(bar, Foo)になります。

1

()は、あるタイプから別のタイプにキャストするC#の方法の1つです。 VB相当値はCType()です。

+0

彼はキャストする必要がありますが、彼のMyAppBaseオブジェクトは静的/共有nullで、そしてないので、現在の誤差があります。 –

+0

良い点 - VB構文を使ってキャストを行う方法が混乱しているようにも見えました。 –

0

Declared CommunicationLink変数はで、はC#コードでインスタンス化されていますか? VBコードがそのオブジェクトに同じソースを使用していることを確認する必要があります。

0

Dim MyAppBase As OPSupport.App.AppBaseはどこから来たのですか。

(TWriteFileCommand)までは、これは型キャストです。 DirectCastには(ほぼ同じ)同じ機能があります。

+0

C#()キャストは、CType()とDirectCastの間のどこかにあります.DCypeはCType()演算子と同じくらいの余分な作業はしませんが、暗黙的/明示的な変換は受け入れます。 –

3

CreateCommandは、CommunicationLinkタイプの静的メソッドのようです。どちらか、またはCommunicationLinkというプロパティがあり、そのタイプにCreateCommandメソッドがあります。

=の後のかっこ内のビットは、キャストです。 VB.NETでこれを行うには、CTypeまたはDirectCastを使用してください。

0

あなたは

Dim MyAppBase As OPSupport.App.AppBase = new OPSupport.App.AppBase() 
Dim writeFile As TWriteFileCommand 
writeFile = MyAppBase.CommunicationLink.CreateCommand(TOPKernel.TCommand.CommandType.WriteFile) 

:-) MyAppBaseする変数の値を割り当てるいけないので、それはですか?

+0

私は前にこれを新しいものとして宣言しようとしましたが、「 'New'は 'MustInherit'と宣言されたクラスでは使用できません」 –