需要帮助才能转换为多类层次结构

时间:2016-04-10 03:58:47

标签: c#

为Discord编写机器人,并希望在出错时更容易调试。

我想接受这个

imagePickerController:didFinishPickingMediaWithInfo:

并且,如果可能的话,使它成为每个命令都有自己的类文件,所以它是这样的

private static void Main(string[]) args)
{
    var client = new DiscordClient();
    client.Connect(" ");
    var commands = new client.Services.Get<CommandService>();
    commands.CreateCommand("test")
        .Description("This is a test command.")
        .Do(async e =>
            {
                await e.Channel.SendMessage("Test Successful!");
            });
}

我从未对多类很好,即使是类似的例子也会有所帮助。

1 个答案:

答案 0 :(得分:1)

您可以创建一个接口IDiscordCommand,其中包含名称,描述和运行该命令的方法。

public interface IDiscordCommand
{
    string Name { get; set; }
    string Description { get; set; }
    void Run(CommandEventArgs e);
}

示例实现将是

public class TestCommand : IDiscordCommand
{
    public string Name { get; set; }
    public string Description { get; set; }

    public void Run(CommandEventArgs e)
    {
        e.Channel.SendMessage("Test");
    }
}

然后在您的程序中,您可以创建一个包含所有可用命令的列表,foreach命令将其注册到CommandService,如此

public class Program
{
    static void Main(string[] args)
    {
        var client = new DiscordClient();
        client.Connect(" ");

        RegisterCommands(client.Services.Get<CommandService>());
    }

    public static void RegisterCommands(CommandService commandService)
    {
        var commands = new List<IDiscordCommand>();
        commands.Add(new TestCommand());

        foreach (var command in commands)
        {
            commandService.CreateCommand(command.Name)
                .Description(command.Description)
                .Do(command.Run);
        }
    }
}