why does the compiler complain about missing ctor of WebSocketHandler?

I'm trying to use websocket in my project. to do so, I installed the package Microsoft Asp.Net SignalR, which consists of WebSocketHandler abstract class. i defined a class inheriting WebSocketHandler, but then the compiler complains: 'Microsoft.AspNet.SignalR.WebSockets.WebSocketHandler' does not contain a constructor that takes 0 arguments'. It seems wierd to me, because the definitioin of WebSocketHandler ctor gets a nullable value, which means the ctor could get no parameter, the definition looks like this: protected WebSocketHandler(int? maxIncomingMessageSize);

can anybody tell me what the problem is? thanks.

Jon Skeet
people
quotationmark

It seems wierd to me, because the definitioin of WebSocketHandler ctor gets a nullable value, which means the ctor could get no parameter

No, it doesn't. There's a big difference between receiving a null value for a nullable type, and not receiving a value at all.

If the parameter were optional, that would be a different matter - but it's not. You have to supply an argument convertible to int? in the call. If you want to provide the null value for int?, do so:

var handler = new WebSocketHandler(null);

Or if you want to avoid accidentally using any other single-parameter constructor definitions which may be applicable with a null literal as the argument, you could use:

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

Or:

var handler = new WebSocketHandler(default(int?));

people

See more on this question at Stackoverflow