【发布时间】:2016-07-20 08:42:02
【问题描述】:
我有这个来自 NuGet 包的类:
using System.Windows.Forms;
namespace FMUtils.KeyboardHook
{
public class KeyboardHookEventArgs
{
public bool isRShiftPressed { get; }
public bool isRWinPressed { get; }
public bool isShiftPressed { get; }
public bool isWinPressed { get; }
public Keys Key { get; }
public override string ToString();
}
}
它在一个程序集中,然后被 this 引用:
using System;
using System.Windows.Forms;
using FMUtils.KeyboardHook;
namespace SpeedyGonzales
{
public class MyClass
{
public MyClass()
{
var key = new KeyboardHookEventArgs();
}
}
}
这在编译时中断,给我这个错误:
'KeyboardHookEventArgs' 不包含取 0 的构造函数 论据
现在我发现了关于这个问题的几件事:
- 每个类都需要一个构造函数
- 如果您没有显式提供 any 构造函数,则会调用直接父级的 无参数 构造函数
- 如果父级没有这样的构造函数,则会抛出错误
这似乎是我的情况,但由于我的类没有继承任何东西,这意味着唯一的直接父是..对象?对象没有无参数构造函数吗?请澄清。
【问题讨论】:
-
public override string ToString();看起来不对 - 这真的可以编译吗? -
这是一个 NuGet 包.. 很常用。代码来自给定程序集的内部。为什么看起来不对?
-
类可能没有任何构造函数——在这种情况下它将有一个默认的无参数构造函数。看起来你还没有显示整个代码,这段代码甚至不应该编译。
-
因为它没有主体 - 你是否可能从包中反编译它?
-
我认为您需要重新阅读该软件包应该为您做什么。它似乎是用an internal constructor 设计的——也就是说,您不应该尝试构造该特定类的实例。
标签: c# class inheritance