gpt4 book ai didi

c# - 如何通过字符串正确处理自定义命令?

转载 作者:太空宇宙 更新时间:2023-11-03 16:05:35 25 4
gpt4 key购买 nike

简而言之:我正在为我正在开发的游戏制作一个服务器程序。要控制服务器,我想使用命令。类似于“/Server Start 5555”。这些命令以字符串格式发送到服务器。这是我的代码:

ServerCommandsClass ServerCommands = new ServerCommandsClass();
Type Service = typeof(ServerCommandsClass);
MethodInfo method = Service.GetMethod(Signals[Count].MessageArray[0]);

List<object> ObjectList = new List<object>();
for (int i = 1; i < Signals[Count].MessageArray.Length; i++)
{
ObjectList.Add(Signals[Count].MessageArray[i]);
}

string result = Convert.ToString(method.Invoke(ServerCommands, ObjectList.ToArray()));

它看起来很乱,因为它是......

基本上我得到的是一个存储新消息/命令的类(SignalClass)。首先,我确定消息是否是命令。如果是,则运行此代码。我的 MessageArray 使用 string.split 函数逐字包含消息。

这可行,但我觉得这是一种解决方法。

我想要的是一个命令基础设施(有点像我的世界),它很容易适应我的需要。就像在我的世界中一样,您可以输入:“/tp 1000 64 1000”和“/tp someplayer 1000 64 1000”。在我的代码中,由于我的代码的限制,你不能。我将不得不制作一个新方法“tp2”或其他能够采用该额外参数的方法。

我希望有人能帮我解决这个问题,因为这很烦人。

顺便说一句我使用 .Net 4.5.1 对此进行编程。如果我在某处有点含糊,请问我,我会澄清。

迪翁博士

最佳答案

当然可以,问题不在于您发布的代码,而在于您调用的方法。您要做的基本上是重载。

/tp x y z

/tp someplaya x y z

与 String.Substring(0) 和 String.Substring(0, 5) 没有区别。如果你明白我的意思。

所以,我想你的方法看起来像这样:

public static void Teleport(params object[])
{
//here you validate your parameters and take decisions
//e.g.
//if(params[0] is String && params[1] is Int32)...
}

关于c# - 如何通过字符串正确处理自定义命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19590308/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com