2011-09-13 1 views
203

No puedo encontrar el espacio de nombre para usar para los elementos [DataContract] y [DataMember]. Según lo que he encontrado, parece que agregar lo siguiente debería ser suficiente, pero en mi caso no lo es.Espacio de nombres para [DataContract]

using System; 
using System.Runtime.Serialization; 

Aquí hay un fragmento de mi código:

using System; 
using System.Runtime.Serialization; 

namespace MyNamespace { 

    [DataContract] 
    public class Tuple<T1, T2> { 
      // A custom implementation of a Tuple 
      //... 
      //... 
     } 
} 

Y el error que consigo:

El tipo o espacio de nombres 'DataContract' no se puede conocer (¿falta una directiva using o una referencia de ensamblado?)

¿No utilizo los espacios de nombres correctos? ?

+0

Usando VS 2017, error de compilación, no se puede compilar, no hay ningún mensaje en la lista de errores o ninguna indicación. Sin coloreado de sintaxis de DataContract, nada. – dudeNumber4

+0

@ dudeNumber4 Haga clic con el botón derecho en su proyecto Agregar/Referencia. En el cuadro de diálogo, encuentre System.Runtime.Serialization y haga checkbox cheked state. Luego presione "Ok" –

Respuesta

375

DataContractAttribute La clase está en el espacio de nombres System.Runtime.Serialization.

Pero se debe añadir referencia a System.Runtime.Serialization.dll

y el montaje no se hace referencia por defecto, así que hay que ir a Referencias -> Agregar referencia en el Explorador de soluciones y añadir una referencia de ensamblado

+56

....y ese ensamblaje no está referenciado por defecto, por lo que debe ir a 'Referencias -> Agregar referencia' en el Explorador de soluciones y agregar una referencia de ensamblaje ... –

+10

Eso es todo, ¡no tenía la referencia en mi solución! Pensé que si se necesitaba una referencia, obtendría un error en la línea 'using System.Runtime.Serialization;'. Supongo que estaba equivocado :) – Otiel

+0

Gracias por este amigo. – TheGateKeeper

4

El atributo [DataContract] y [DataMember] se encuentran en el espacio de nombres System.ServiceModel que se encuentra en System.ServiceModel.dll.

System.ServiceModel usa los espacios de nombres System y System.Runtime.Serialization para serializar los datamembers.

0

Primero, agrego las referencias a mi Modelo, luego las uso en mi código. Hay dos referencias que debe agregar:

usando System.ServiceModel;
utilizando System.Runtime.Serialization;

entonces, este problema se solucionó en mi programa. Espero que esta respuesta pueda ayudarte. Gracias.

3

En Visual Studio para .Net 4.0 Framework,

  1. tratar de añadir nueva referencia de los proyectos.
  2. En la pestaña .Net, busque System.Runtime.Serialization.
  3. Ahora, puede usar using System.Runtime.Serialization. Y el error no se mostrará
Cuestiones relacionadas