将多方法对象传递给另一个类

问题描述:

作为我正在开发的个人项目的一部分,我使用了另一个程序员编写的小型代码库,并试图将其重构为我自己的目的。长话短说,他们有这么大一部分代码是传入的命令解析器。我将代码移动到它自己的类文件中,并将几个代码位移动到该类中的自己的方法中。我遇到的问题是我无法将原始代码块中所需的两个对象传递给新的解析器类。原始代码部分使用称为AllSockets的多重方法对象。我似乎无法弄清楚如何将这个对象传递给新的类方法没有得到错误将多方法对象传递给另一个类

错误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

警告:该代码是真的砍死在一起,现在和变量命名是一场噩梦。如果可以更容易阅读,我可以粘贴特定部分。任何帮助,将不胜感激。

的AllSocket方法声明为

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

从快速浏览过的代码,它出现在AllSockets私人怒吼使用(..)方法作为方法。因此,为了通过此作为一个功能对象,可以与类型的委托或函数的参数声明CheckForCommands方法:

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代替委托。

替换object _AllSockets有:

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

你或许应该在CheckForCommands替换此,呼喊并告诉方法签名。

+0

非常有趣。我没有意识到Func,现在有了新的东西可供学习。它解决了我遇到的问题。 – ChargerIIC 2012-02-08 23:18:03

+0

标记为答案然后:) – 2012-02-09 08:32:39

AllSockets是一种方法。我猜你想采取AllSockets方法返回并将其传递到commandParser.CheckForCommands函数的对象。

试着这么做:

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

这将无法正常工作,因为AllSockets参数稍后用于像函数一样使用的方法。 – user492238 2012-02-08 22:53:22