Решил создать дискорд бота, но я не могу успокоится из-за своего непонимания работы связи наследуемого класса с классом-родителем
ModulBase<SocketCommandContext>
Проясню:
Для обработки команд пользователя дискорд-бота, достаточно создать класс, который наследуется от
ModulBase<SocketCommandContext>
. В классе необходимо создать метод, который будет вызываться при вводе пользователем команды. И чтобы этот метод вызывался при определенной команде, к нему достаточно добавить
атрибут [Command("текст команды")]
, как это работает?
Мне непонятен именно процесс, по которому класс-родитель каким-то образом обращаясь к атрибуту вызывает метод, к которому он принадлежит. Как я понимаю это процесс рефлексии, но разве не у объекта\свойства или ч-либо другого сначала запрашивается его атрибут, а потом значение этого атрибута?
Пример
public class CommandHandler : ModuleBase<SocketCommandContext>
{
[Command("echo", true)]
private async Task Echo()
{
_usersList.Add(Context.User);
var message = Context.Message.Content;
message = message.Remove(0, 5);
await ReplyAsync($"{message}");
}
}
Было бы неплохо если бы мне разъяснили как это работает или привели статью с примерами