2012-02-08 5 views
0

個人プロジェクトの一環として、私は別のプログラマーによって書かれた小さなコードベースを使って自分自身の目的にリファクタリングしようとしていました。長い話を簡単に言えば、彼らは入ってくるコマンドパーサであったこの巨大なコードセクションを持っていました。コードを自分のクラスファイルに移動し、そのクラスのいくつかのコードビットを独自のメソッドに移動しました。私が遭遇している問題は、元のコードブロックから2つの必要なオブジェクトを新しいパーサークラスに渡すことができないということです。元のコードセクションは、AllSocketsと呼ばれるmutl-methodオブジェクトを使用します。 「オブジェクト」に「メソッドグループ」から変換することはできません複数のメソッドオブジェクトを別のクラスに渡す

:私はエラー2引数2

エラーを取得せずに、新しいクラスのメソッドにこのオブジェクトを渡す方法を見つけ出すように見えることはできませんコードの呼び出し線:メソッドが呼び出さ

bool wasValidCommand = (commandParser.CheckForCommands(thisConnection, AllSockets, characterPath, helpFilePath)); 

public bool CheckForCommands(ConnectionInfo _connected, object _AllSockets, string characterPath, string helpFilePath) 

私はここにホスティングServer.csクラスを掲載しました:私は、オブジェクトを渡すためにしようとしていますhttp://codepad.org/1kRHA1nk

新しいクラスはここにある:http://codepad.org/oONRaEtt

警告:コードは本当に今一緒にハッキングされ、変数の命名悪夢です。それが読みやすいなら、私は特定のセクションを貼り付けることができます。どんな助けもありがとう。

答えて

1

、AllSocketsがプライベートシャウト(..)メソッドで使用されて表示されますクラスの - メソッドとして。

delegate object AllSocketDelegate (string tempFlag, object objectOne, object object_Two, object object_Three); 
public bool CheckForCommands(ConnectionInfo _connected, AllSocketDelegate _AllSockets, string characterPath, string helpFilePath) 

かのFuncデリゲートの代わりと似て:だから関数オブジェクトとしてこれを渡すために、あなたはタイプのデリゲートや関数のパラメータでCheckForCommandsメソッドを宣言してもよいです。

1

置き換えobject _AllSocketsは:

Func<string, object, object, object, object>_AllSockets 

あなたはおそらく、CheckForCommandsでこれを置き換えるシャウトし、メソッドのシグネチャを教えてください。

+0

非常に興味深い。私はFuncを認識していなかったので、勉強するのに新しいことがあります。私は持っていた問題を解決しました。 – ChargerIIC

+0

答えとしてマークしてください:) –

0

AllSocketsです。私はAllSocketsメソッドが返すオブジェクトを取得し、それをcommandParser.CheckForCommands関数に渡したいと思っています。

のようなものを試してみてください:AllSocket方法は、コードの上に簡単に見てから

public object AllSockets(string tempFlag, object objectOne, object object_Two, object object_Three) 

として宣言されて

object allSockets = AllSockets(...); 
bool wasValidCommand = (commandParser.CheckForCommands(thisConnection, allSockets, characterPath, helpFilePath)); 
+0

AllSocketsパラメータは後で関数のように使われるメソッドの中にあるので、これはうまくいきません。 – user492238

関連する問題