0

かなり大規模な VB.Net バック オフィスの winforms アプリケーションでの作業。100万以上のLOC。すべてのコードの 90% がフォームやその他の UI コントロールにある大きな泥だんご。

時間とリソースが許す限り、より良いアーキテクチャをゆっくりと導入し、Jeremy Miller による EventAggrgator のアイデアを使用してきました。

http://codebetter.com/blogs/jeremy.miller/archive/2008/01/11/build-your-own-cab-extensible-pub-sub-event-aggregator-with-generics.aspx

最初に、SynchronizationContext の使用を取り除きました。今、私はそれを紹介しようとしています.ラムダのものをc#からvb.netに変換するのに苦労しています。

具体的には、c#のこの行

_context.Send(delegate { receiver.Handle(subject); }, null);

これは私がこれまでに持っている vb.net です:

_context.Send(New SendOrPostCallback(AddressOf listener.Handle(message)), Nothing)

私が得ているエラーは

listener.Handle(message) <-- AddressOf オペランドはメソッドの名前でなければなりません。

私は単純なものを見逃していると確信していますが、これを2日間見つめた後、私は迷っています.

4

1 に答える 1

0

以下を試してください

_context.Send(New SendOrPostCallback(AddressOf listener.Handle), message)

問題は、VB9 まで VB でサポートされていない C# デリゲートを翻訳しようとしていることです。このデリゲートのスタイルである void リターンは、実際には VB10 までサポートされていません。

最良の翻訳は、代わりにストレート デリゲートを使用することです。署名によっては、上記が機能するはずです。そうでない場合は、より良い回答ができるように、listener.Handle の署名を投稿してください。

于 2010-05-19T15:10:54.480 に答える