2011-10-19 18 views

Respuesta

7

agregar una restricción new:

class Request<T> where T : new() { 
    private T sw; 

    public void Request() { 
     sw = new T(); 
    } 
} 

Esto le dice al compilador que T siempre tendrá un constructor sin parámetros accesibles (no, no se puede especificar cualquier otro tipo de constructor).

+0

Gracias por esta respuesta correcta y rápida. – Racooon

5

Debe declarar la restricción where T : new() en la declaración de clase. Esto restringe T a los tipos con un constructor predeterminado público. Por ejemplo:

class Request<T> where T : new() 
{ 
    private T sw; 

    public Request() 
    { 
     sw = new T(); 
    } 
} 

Más información: http://msdn.microsoft.com/en-us/library/d5x73970.aspx

+0

Gracias, un ejemplo sería muy útil. – Racooon

+0

@VuralAcar - No hay problema, actualizado con el ejemplo. –

5

Es necesario indicar al compilador que T siempre se implementa un constructor sin parámetros.

class Request<T> where T : new() 
+0

"un constructor predeterminado" – BoltClock

+0

@BoltClock: ¿quizás un constructor sin parámetros? constructor nullary? ¿Cuál es la mejor palabra aquí? – Jimmy