我不确定如何表达这个问题,但希望这段代码可以澄清问题。
我有一个像这样的基类:
public abstract class ServiceCall<TResponse> where TResponse : ServiceResponse
{
// various properties
}
我有一个这样的具体课程:
public class TransactionRequest : ServiceCall<TransactionResponse>
{
// various properties
}
TransactionResponse继承自ServiceResponse
我还有一些其他的请求和响应类型都以与上面相同的方式继承。
这些请求是从传递不同请求类型的客户端映射的,例如:
public InformationRequest : Request
{
// various properties to map to TransactionRequest
}
我现在正在尝试编写ServiceCall工厂,根据客户端提供的信息,它将返回正确的ServiceCall请求。
到目前为止,我有这个:
public class ServiceCallFactory
{
public ServiceCallFactory()
{
}
public ServiceCall<ServiceResponse> GetServiceCall(Request request)
{
ServiceCall<ServiceResponse> serviceCall;
switch(request.GetType().Name)
{
case "InformationRequest":
var transactionRequest = new TransactionRequest(request as InformationRequest);
serviceCall = transactionRequest;
break;
// more cases
}
return serviceCall;
}
}
然而,这是抱怨我无法将TransactionRequest转换为ServiceCall,即使它继承自ServiceRall,其中TransactionResponse继承自ServiceResponse。
最终,我如何创建具有此当前结构的工厂?