Espacio de nombres para [Contrato de datos]
No puedo encontrar el espacio de nombres para usar [DataContract]
y [DataMember]
los elementos. Según lo que he encontrado, parece que agregar lo siguiente debería ser suficiente, pero en mi caso no lo es.
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 me sale:
No se pudo encontrar el tipo o nombre del espacio de nombres 'DataContract' (¿falta una directiva de uso o una referencia de ensamblado?)
¿No estoy usando los espacios de nombres correctos?
DataContractAttribute
La clase está en el System.Runtime.Serialization
espacio de nombres.
Deberías agregar una referencia a System.Runtime.Serialization.dll
. Sin embargo, no se hace referencia a ese ensamblaje de forma predeterminada. Para agregar la referencia a su proyecto, debe ir a Referencias -> Agregar referencia en el Explorador de soluciones y agregar una referencia de ensamblaje manualmente.
http://msdn.microsoft.com/en-us/library/system.runtime.serialization.datacontractattribute.aspx
DataContractAttribute está en el espacio de nombres System.Runtime.Serialization y debe hacer referencia a System.Runtime.Serialization.dll. Sólo está disponible en .Net >= 3
En Visual Studio para .Net 4.0 Framework,
- Intente agregar una nueva referencia al proyecto.
- En la pestaña .Net, busque
System.Runtime.Serialization
. - Ahora puedes usar
using System.Runtime.Serialization
. Y el error no se mostrará.
Los atributos [DataContract] y [DataMember] se encuentran en el espacio de nombres System.ServiceModel que se encuentra en System.ServiceModel.dll.
System.ServiceModel utiliza los espacios de nombres System y System.Runtime.Serialization para serializar los miembros de datos.