如何返回一个继承具有泛型响应的基类的类?

时间:2017-08-17 15:27:49

标签: c# factory

我不确定如何表达这个问题,但希望这段代码可以澄清问题。

我有一个像这样的基类:

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。

最终,我如何创建具有此当前结构的工厂?

0 个答案:

没有答案