2016-08-01 192 views
-1

我有以下的类定义的工作原理:定义类泛型类型

public class AsyncValidationRequestHandler<TRequest, TResponse> : IAsyncRequestHandler<TRequest, TResponse> 
    where TRequest : IAsyncRequest<TResponse> { } 

但我需要定义τ响应的信封,其中信封是:

public class Envelope<T> { } 

我试过如下:

public class AsyncValidationRequestHandler<TRequest, TResponse> : IAsyncRequestHandler<TRequest, TResponse> 
    where TRequest : IAsyncRequest<TResponse> 
    where TResponse : Envelope<TModel> { } 

基本上,我定义一个包络为:

ModalA modelA = new ModelA(); 
Envelope<ModelA> envelopeA = new Envelope<ModelA>(); 

ModalB modelB = new ModelB(); 
Envelope<ModelB> envelopeB = new Envelope<ModelB>(); 

而且我知道我的回答是永远的东西信封...

但我的代码不能编译。我得到错误:

The type or namespace name 'TModel' could not be found (are you missing a using directive or an assembly reference?)  

如何解决这个问题?我需要一个界面吗?

+0

是什么''TModel''这里? –

+0

你实际上是否在'EnvelopeTModel>中缺少左尖括号?就像在你的代码片段中显示的那样?究竟是什么导致它不能编译的消息? – Zack

+0

@EhsanSajjad TModel是一个通用类型 –

回答

4

您将需要申报TModel作为一种通用的参数,也:

public class AsyncValidationRequestHandler<TRequest, TResponse, TModel> : IAsyncRequestHandler<TRequest, TResponse> 
    where TRequest : IAsyncRequest<TResponse> 
    where TResponse : Envelope<TModel> { }