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