public EndPoint(Uri EndPointUri, IMessageDecoder CommandDecoder, ICommandDispatcher CommandDispatcher, ILogger Logger) { EndPointUri.IsNotNull($"Invalid parameter received in the {nameof(EndPoint)} constructor. {nameof(EndPointUri)}"); CommandDecoder.IsNotNull($"Invalid parameter received in the {nameof(EndPoint)} constructor. {nameof(CommandDecoder)}"); CommandDispatcher.IsNotNull($"Invalid parameter received in the {nameof(EndPoint)} constructor. {nameof(CommandDispatcher)}"); Logger.IsNotNull($"Invalid parameter received in the {nameof(EndPoint)} constructor. {nameof(Logger)}"); this.CommandDecoder = CommandDecoder; this.CommandDispatcher = CommandDispatcher; this.Logger = Logger; HttpListener = new HttpListener() { IgnoreWriteExceptions = false, Prefixes = { EndPointUri.ToString() }, }; HttpListener.Start(); Logger.Log(Constants.Component, $"New endpoint at {EndPointUri.ToString()}"); }