I have four classes. Request, DerivedRequest, Handler, DerivedHandler. The Handler class has a property with the following declaration:
public abstract Request
public class Request{} public class DerivedRequest : Request{} public class Handler where T : Request { public abstract T Request { get; set; } } public class DerivedHandler : Handler { public override DerivedRequest Request { get; set; } }