Let's say I have some class - hypothetical example: public class InvalidResponseException<TReq, TResp> : Exception { public TReq RequestData { get; protected set; } public TResp ResponseData { get; protected set; } public InvalidResponseException(string message, TReq requestData, TResp responseData) : this(message, null, requestData, responseData) { } public InvalidResponseException(string message, Exception innerException, TReq requestData, TResp responseData) : base(message, innerException) { RequestData = requestData; ResponseData = responseData; } } Okay, class defined... and compiles, no