Namespace for [DataContract]
I can't find the namespace to use for [DataContract]
and [DataMember]
elements. According to what I've found, it seems that adding the following should be enough, but in my case it is not.
using System;
using System.Runtime.Serialization;
Here is a snippet of my code:
using System;
using System.Runtime.Serialization;
namespace MyNamespace {
[DataContract]
public class Tuple<T1, T2> {
// A custom implementation of a Tuple
//...
//...
}
}
And the error I get:
The type or namespace name 'DataContract' could not be found (are you missing a using directive or an assembly reference?)
Am I not using the right namespaces?
Solution 1:
DataContractAttribute
Class is in the System.Runtime.Serialization
namespace.
You should add a reference to System.Runtime.Serialization.dll
. That assembly isn't referenced by default though. To add the reference to your project you have to go to References -> Add Reference in the Solution Explorer and add an assembly reference manually.
Solution 2:
http://msdn.microsoft.com/en-us/library/system.runtime.serialization.datacontractattribute.aspx
DataContractAttribute is in System.Runtime.Serialization namespace and you should reference System.Runtime.Serialization.dll. It's only available in .Net >= 3
Solution 3:
In visual studio for .Net 4.0 framework,
- Try to add new reference to project.
- On .Net Tab, Search
System.Runtime.Serialization
. - Now, you can use
using System.Runtime.Serialization
. And the error will not be shown.
Solution 4:
[DataContract] and [DataMember] attribute are found in System.ServiceModel namespace which is in System.ServiceModel.dll .
System.ServiceModel uses the System and System.Runtime.Serialization namespaces to serialize the datamembers.
Solution 5:
I solved this problem by adding C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.0\System.Runtime.Serialization.dll in the reference