当我尝试运行以下代码时出错。
private sealed class ReqHandler
{
public ReqHandler(object @object, IntPtr method);
public virtual IAsyncResult BeginInvoke(object[] args, AsyncCallback callback, object @object);
public virtual d0 EndInvoke(IAsyncResult result);
public virtual d0 Invoke(object[] args);
}
我得到的错误是。
HB_Auth.AuthImpl.ReqHandler.ReqHandler(object,IntPtr)'必须有一个正文,因为它没有标记为abstract,extern或partial(CS0501) (HB_Auth.Patched)
新虚拟成员
HB_Auth.AuthImpl.ReqHandler.BeginInvoke(object[], AsyncCallback, object)' is declared in a sealed class
HB_Auth.AuthImpl.ReqHandler' (CS0549)(HB_Auth.Patched)
答案 0 :(得分:4)
编译错误说明了一切: 您已声明方法,但它们没有正文。所以,要么给他们一个身体,要把它们标记为抽象。 然而,正如我看到你的课程是私密的和密封的,将它们抽象化是不可取的,因为你的课程是密封的,所以没有人可以继承它。
但是,您粘贴的代码看起来像反编译代码?
答案 1 :(得分:3)
CS0549错误:
密封类不能用作基类,虚拟方法必须在派生类中实现,这是一个矛盾。
CS0501错误:
非
abstract
方法必须具有实现。
您可能想要制作课程protected
和virtual
函数abstract
答案 2 :(得分:1)
第一个问题:构造函数需要一个体。你不能只声明一个构造函数,你需要定义它。如果需要,可以使用空构造函数:
public ReqHandler(object @object, IntPtr method) {}
第二个问题:你做了一个密封的类,但有虚拟方法。虚方法仅用于覆盖扩展此类的类,但是您不能扩展密封类,因此不能扩展错误。您需要定义这些方法,或者解密该类(在这种情况下,您需要扩展它以执行任何有用的操作)。