Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 为什么编译器抱怨WebSocketHandler缺少ctor?_Asp.net - Fatal编程技术网

Asp.net 为什么编译器抱怨WebSocketHandler缺少ctor?

Asp.net 为什么编译器抱怨WebSocketHandler缺少ctor?,asp.net,Asp.net,我正在尝试在我的项目中使用websocket。 为此,我安装了Microsoft Asp.Net Signal包,该包由WebSocketHandler抽象类组成。 我定义了一个继承WebSocketHandler的类,但编译器抱怨: “Microsoft.AspNet.signal.WebSockets.WebSocketHandler”不包含接受0个参数的构造函数”。 对我来说这似乎很奇怪,因为WebSocketHandler ctor的定义得到了一个可为空的值,这意味着该ctor不能得到任

我正在尝试在我的项目中使用websocket。 为此,我安装了Microsoft Asp.Net Signal包,该包由WebSocketHandler抽象类组成。 我定义了一个继承WebSocketHandler的类,但编译器抱怨: “Microsoft.AspNet.signal.WebSockets.WebSocketHandler”不包含接受0个参数的构造函数”。 对我来说这似乎很奇怪,因为WebSocketHandler ctor的定义得到了一个可为空的值,这意味着该ctor不能得到任何参数, 定义如下: 受保护的WebSocketHandler(int?maxIncomingMessageSize)

有人能告诉我问题出在哪里吗? 谢谢

对我来说这似乎很奇怪,因为WebSocketHandler ctor的定义得到了一个可为null的值,这意味着该ctor不能得到任何参数

不,没有。对于可为null的类型,接收
null
值与根本不接收值之间有很大区别

如果参数是可选的,那将是另一回事——但事实并非如此。您必须在调用中提供一个可转换为
int?
的参数。如果要为
int?
提供空值,请执行以下操作:

var handler = new WebSocketHandler(null);
或者,如果希望避免意外使用任何其他可能适用于
null
文本作为参数的单参数构造函数定义,可以使用:

var handler = new WebSocketHandler((int?) null);
或:


protected
成员可由派生类实例访问,并且没有什么特别之处。这门课本身也没什么特别的

它只是需要传入一个可为null的类型,并不意味着它不能获取任何参数

int? maxIncomingMessageSize = 0;
var socket = new WebSocketHandler(maxIncomingMessageSize);
public class MyHandler : WebSocketHandler
{
    // not mandatory
    public MyHandler()
      :this(null) 
    {}

    // mandatory
    public MyHandler(int? maxIncomingMessageSize)
      :base(maxIncomingMessageSize) 
    {}
}

在派生类中,您可以/应该定义一个“接受0个参数的构造函数”


可为空的参数
无参数
不同。只需定义一个没有参数的构造函数,并将null传递给另一个构造函数即可。谢谢大家的帮助。。我仍然不明白为什么编译器会抱怨:“Microsoft.AspNet.signar.WebSockets.WebSocketHandler”不包含接受0个参数的构造函数”。事实上,我无法更改WebSocketHandler类并添加一个接受0个参数的ctor。我应该怎么做来纠正这个错误?编辑了我的答案,希望能有所帮助。
public class MyHandler : WebSocketHandler
{
    // not mandatory
    public MyHandler()
      :this(null) 
    {}

    // mandatory
    public MyHandler(int? maxIncomingMessageSize)
      :base(maxIncomingMessageSize) 
    {}
}