【发布时间】:2026-01-01 11:05:01
【问题描述】:
我有下一个场景:
public class RequestBase { }
public class ResponseBase { }
public interface IService<TRequest, TResponse>
where TRequest : RequestBase where TResponse : ResponseBase
{
TResponse Execute(TRequest request);
}
public class MyRequest : RequestBase { }
public class MyResponse : ResponseBase { }
public class MyService : IService<MyRequest, MyResponse>
{
public MyResponse Execute(MyRequest request)
{
return new MyResponse();
}
}
现在我正在创建将创建我的服务的工厂:
class ServicesFactory
{
public IService<RequestBase, ResponseBase> Create()
{
var service = new MyService();
return (IService<RequestBase, ResponseBase>)service;
}
}
问题是转换抛出异常。
如何将派生类型转换为基类型?
【问题讨论】:
-
您可以为您使用的语言添加标签吗?可能是 C#?
-
如果你通过基类来推动一切,那么没有理由使用泛型。如果您想要静态类型,请更改您的创建或工厂签名以包含类型参数。否则你也可以只使用对象或基本类型。
-
这当然只是我的代码的一个简化示例,但我确实需要这个层次结构