非静态字段、方法或属性需要对象引用


using System;
using System.Diagnostics;
using System.Reflection.Emit;
using System.Threading;
using EasyExploits;
namespace ConsoleApp1
{
class Program
{
EasyExploits.Module module = new EasyExploits.Module();
static void Main(string[] args)
{
Module.LaunchExploit();
Console.ForegroundColor = ConsoleColor.Green;
Label:
Console.WriteLine("Please Type 'Inject'");
string proccess1 = Console.ReadLine();
if (proccess1 == "Inject")
{
Console.WriteLine("");
Console.WriteLine("Injected!");
goto Begin;
}
else
{
goto Label;
}
Begin:
Console.WriteLine("");
Console.WriteLine("Enter a script and press enter to execute it.");
string answer = Console.ReadLine();
Module.ExecuteScript(answer);
goto Begin


}
}
}

所以,我试图找到解决这个问题的方法,但我找不到,所以我来堆栈溢出。无论如何,我的控制台应用程序应该注入 EasyExploits.DLL并在将脚本粘贴到输入时执行 Lua 脚本。但是,我收到错误说,"非静态字段、方法或属性'Module.LaunchExploit(('需要对象引用"和"非静态字段、方法或属性'Module.ExecuteScript(string('需要对象引用">我是 c# 的初学者,并不真正理解此错误,所以如果有人可以通过初学者友好的简单步骤引导我完成它,那就太好了。

您的Main方法是静态的,您只能从静态方法访问同一类的静态成员。要使EasyExploits.Module也静态,您需要做的所有事情:

private static readonly EasyExploits.Module module = new EasyExploits.Module();

这里有 2 个问题

  1. 模块是一个类,但LaunchExploit()不是静态的,也就是说,它需要从object运行。您可能打算使用该对象module
  2. 如果您想在static函数中使用它,module也应该staticmain

我还要提到一个不太紧迫的问题:goto很少是一个好主意。如果您符合以下条件,您的代码会变得更好:

  1. 创建一个静态函数begin,无论您在哪里go to Begin执行以下操作:
begin()
return;
  1. 创建一个static函数label,对它做同样的事情

这将使您的代码更具可读性和可调试性。

相关内容

  • 没有找到相关文章

最新更新