Discord.NET '对象引用未设置为对象的实例。 C# [重复]

Posted

技术标签:

【中文标题】Discord.NET \'对象引用未设置为对象的实例。 C# [重复]【英文标题】:Discord.NET 'Object reference not set to an instance of an object.' C# [duplicate]Discord.NET '对象引用未设置为对象的实例。 C# [重复] 【发布时间】:2021-12-03 08:26:00 【问题描述】:

我的命令处理程序有错误。 System.NullReferenceException: '对象引用未设置为对象的实例。'

片段

Client.MessageReceived += HandleCommand;

完整代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using Discord.Commands;
using Discord.WebSocket;

namespace DotNetNuker

    public class CommandHandler
    
        private CommandService Commands  get; set; 
        
        private DiscordSocketClient Client  get; set; 


        public async Task Init(DiscordSocketClient client)
        
            this.Client = Client;
            Commands = new CommandService();

            await Commands.AddModulesAsync(Assembly.GetEntryAssembly(), null);
            Client.MessageReceived += HandleCommand;
        

        private async Task HandleCommand(SocketMessage Msg)
        
            var msg = Msg as SocketUserMessage;
            if (msg == null) return;

            int argPos = 0;
            if (!(msg.HasStringPrefix("n!", ref argPos) || msg.HasMentionPrefix(Client.CurrentUser, ref argPos))) return;

            var context = new CommandContext(Client, msg);

            var result = Commands.ExecuteAsync(context, argPos, null);

            if (!result.IsCompleted) await context.Channel.SendMessageAsync("Failed to execute command.");
        
    


【问题讨论】:

乍一看,这行代码……this.Client = Client;……看起来有点奇怪,因为传入的client从未使用过,而属性Client看起来像null。我猜这条线应该是……this.Client = client;……? 【参考方案1】:

JohnG 解决了我的问题: 一目了然,这行代码…… this.Client = Client; ... 从某种意义上说,从不使用传入的客户端并且属性 Client 看起来有些奇怪,这看起来有点奇怪。我猜这行应该是…… this.Client = client;

我把代码this.Client = Client;改成了this.Client = client;

【讨论】:

以上是关于Discord.NET '对象引用未设置为对象的实例。 C# [重复]的主要内容,如果未能解决你的问题,请参考以下文章

对象引用未设置为对象实例的自动映射器问题

Ldap连接抛出对象引用未设置为对象错误的实例

stsadm -addsolution“对象引用未设置为对象的实例”

对象引用未设置为数据集中对象的实例

对象引用未设置为 Google Cloud Loadobject 中的对象实例

AsQueryable() 返回用户未处理的 NullReference 异常“对象引用未设置为对象实例”