2016-08-01 10 views
-1

ich die folgende Klassendefinition haben, die funktioniert:definieren Klasse mit generische Typen

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

Aber ich brauche tAntwort als Umschlag zu definieren, wo Umschlag ist:

public class Envelope<T> { } 

versuchte ich folgendes:

Grundsätzlich definiere ich einen Umschlag als:

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

oder

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

Und ich weiß, dass meine Antwort ist immer ein Umschlag von etwas ...

Aber mein Code nicht kompiliert. Ich erhalte den Fehler:

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

Wie löst man das? Brauche ich eine Schnittstelle?

+0

was '' TModel'' hier? –

+0

Vermissen Sie tatsächlich die linke spitze Klammer in 'EnvelopeTModel>' wie wird hier in Ihrem Ausschnitt angezeigt? Was genau ist die Nachricht, die dazu führt, dass sie nicht kompiliert wird? – Zack

+0

@EhsanSajjad TModel ist ein generischer Typ –

Antwort

4

Sie müssen TModel als generischer Parameter erklären, auch:

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