Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#Discord.NET命令如何将字符串数组作为参数_C#_Arrays_Discord_Discord.net - Fatal编程技术网

C#Discord.NET命令如何将字符串数组作为参数

C#Discord.NET命令如何将字符串数组作为参数,c#,arrays,discord,discord.net,C#,Arrays,Discord,Discord.net,我正在使用Discord.NET 1.0.2,这个问题是针对Discord.NET的 我正在使用Discord.Commands来说明我如何使用命令,并将它们初始化为Discord.Commands var msg = message as SocketUserMessage; var context = new SocketCommandContext(_client, msg); int argPos = 0; if(msg.HasCharPrefix('>', ref argPos)

我正在使用Discord.NET 1.0.2,这个问题是针对Discord.NET的

我正在使用
Discord.Commands
来说明我如何使用命令,并将它们初始化为Discord.Commands

var msg = message as SocketUserMessage;
var context = new SocketCommandContext(_client, msg);
int argPos = 0;
if(msg.HasCharPrefix('>', ref argPos))
{
    var result = await _service.ExecuteAsync(context, argPos);
}
然后在我的单独类中,我有一个特定的命令

public class Command : ModuleBase<SocketCommandContext>
{
    [Command("test")]
    public async Task balanceCommmand(String[] stringArray)
    {
        // code
    }
}
公共类命令:ModuleBase
{
[命令(“测试”)]
公共异步任务平衡命令(字符串[]字符串数组)
{
//代码
}
}
但是,在运行程序时,我收到一个
System.InvalidOperationException
“附加信息:找不到类型字符串[]的类型读取器,必须指定一个”

我以前在异步任务下使用过参数,但它似乎不希望使用字符串数组作为参数

如何使用Discord.Commands 1.0.2版将字符串数组作为参数传递给命令

如果没有办法做到这一点,有没有一种方法可以让我用另一种方法来模仿呢


我在谷歌上四处搜索,没有发现有人有与我类似的问题,甚至没有发现与我类似的问题。

而不仅仅是
String[]
你需要像这样放置
参数:

public class Command : ModuleBase<SocketCommandContext>
{
    [Command("test")]
    public async Task balanceCommmand(params String[] stringArray)
    {
        // code
    }
}
公共类命令:ModuleBase
{
[命令(“测试”)]
公共异步任务平衡命令(参数字符串[]字符串数组)
{
//代码
}
}

params关键字:

而不仅仅是
String[]
您需要将
params
放在前面:

public class Command : ModuleBase<SocketCommandContext>
{
    [Command("test")]
    public async Task balanceCommmand(params String[] stringArray)
    {
        // code
    }
}
公共类命令:ModuleBase
{
[命令(“测试”)]
公共异步任务平衡命令(参数字符串[]字符串数组)
{
//代码
}
}

params关键字:

您可以使用
CommandService
AddTypeReader
方法添加自定义
TypeReader
。您可以使用
CommandService
AddTypeReader
方法添加自定义
TypeReader