Is it possible to has a class with two constraints from same base class but they can't be the same class. Example as below:
public interface BaseMessage { }
public class RequestMessage: BaseMessage { }
public class ResponseMessage: BaseMessage { }
public class BaseDocumentDefinition<B,C> where B: BaseMessage where C: BaseMessage //<-- At here how to define B cannot same with C?
{
Document<B> RequestDocument { get; set; }
Document<C> ResponseDocument { get; set; }
// ^Here need to prevent RequestDocument and ResponseDocument end up being same class
}
//This will get correct compilation
public class DerivedDocumentDefinition: BaseDocumentDefinition<RequestMessage, ResponseMessage> { }
//This will also get success compilation, because **RequestMessage** valid for both constraint
public class DerivedDocumentDefinition2: BaseDocumentDefinition<RequestMessage, RequestMessage> { }