非静态字段、方法或 属性 需要对象引用
An object reference is required for a non-static field, method, or property
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 脚本。但是,我收到并错误地说,"An object reference is required for the non-static field, method, or property 'Module.LaunchExploit()'" 和 "An object reference is required for the non-static field, method, or property 'Module.ExecuteScript(string)'" 我是 c# 的初学者,并不是真的理解这个错误,所以如果有人可以通过对初学者友好的简单步骤引导我完成它,那就太好了。
您的 Main
方法是静态的,并且您可以从静态方法访问同一 class 的 仅 个静态成员。您需要做的就是让您的 EasyExploits.Module
也保持静态:
private static readonly EasyExploits.Module module = new EasyExploits.Module();
这里有 2 个问题
- 模块是一个class,但是
LaunchExploit()
不是静态的,也就是说,它需要从一个object
运行。您可能打算使用对象 module
module
也应该是 static
,如果你想在 static
函数中使用它 main
我还要提一个不那么紧迫的问题:goto
很少是个好主意。如果您:
,您的代码会变得更好:
- 创建一个静态函数
begin
,然后在任何地方 go to Begin
执行:
begin()
return;
- 创建一个
static
函数 label
,对其执行相同的操作
这将使您的代码更具可读性和可调试性。
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 脚本。但是,我收到并错误地说,"An object reference is required for the non-static field, method, or property 'Module.LaunchExploit()'" 和 "An object reference is required for the non-static field, method, or property 'Module.ExecuteScript(string)'" 我是 c# 的初学者,并不是真的理解这个错误,所以如果有人可以通过对初学者友好的简单步骤引导我完成它,那就太好了。
您的 Main
方法是静态的,并且您可以从静态方法访问同一 class 的 仅 个静态成员。您需要做的就是让您的 EasyExploits.Module
也保持静态:
private static readonly EasyExploits.Module module = new EasyExploits.Module();
这里有 2 个问题
- 模块是一个class,但是
LaunchExploit()
不是静态的,也就是说,它需要从一个object
运行。您可能打算使用对象module
module
也应该是static
,如果你想在static
函数中使用它main
我还要提一个不那么紧迫的问题:goto
很少是个好主意。如果您:
- 创建一个静态函数
begin
,然后在任何地方go to Begin
执行:
begin()
return;
- 创建一个
static
函数label
,对其执行相同的操作
这将使您的代码更具可读性和可调试性。