web-dev-qa-db-ja.com

[DataContract]の名前空間

[DataContract]および[DataMember]要素に使用する名前空間が見つかりません。私が見つけたものによると、それは以下を追加することで十分であるべきであるように思われます、しかし私の場合ではそうではありません。

using System;
using System.Runtime.Serialization;

これが私のコードの抜粋です。

using System;
using System.Runtime.Serialization;

namespace MyNamespace {

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

そして私が得るエラー:

型または名前空間名 'DataContract'が見つかりませんでした(usingディレクティブまたはアセンブリ参照がありませんか?)

正しい名前空間を使用していませんか?

224
Otiel

DataContractAttributeクラスはSystem.Runtime.Serialization名前空間にあります。

System.Runtime.Serialization.dllへの参照を追加する必要があります。そのアセンブリは、デフォルトでは参照されません。プロジェクトに参照を追加するには、ソリューションエクスプローラーで[参照設定] - > [参照の追加]を選択し、手動でアセンブリ参照を追加します。

418
CD..

http://msdn.Microsoft.com/ja-jp/library/system.runtime.serialization.datacontractattribute.aspx

DataContractAttributeはSystem.Runtime.Serialization名前空間にあり、System.Runtime.Serialization.dllを参照する必要があります。それは.Net> = 3でのみ利用可能です

7
Guillaume

[DataContract]および[DataMember]属性は、System.ServiceModel.dllにあるSystem.ServiceModel名前空間にあります。

System.ServiceModelは、SystemおよびSystem.Runtime.Serialization名前空間を使用してデータメンバーをシリアル化します。

5
Jatin Khurana

.NET 4.0フレームワークのビジュアルスタジオでは、

  1. プロジェクトに新しい参照を追加してみてください。
  2. .Netタブで、System.Runtime.Serializationを検索します。
  3. 今、あなたはusing System.Runtime.Serializationを使うことができます。そしてエラーは表示されません。
4

まず、モデルに参照を追加してから、コードでそれらを使用します。追加する必要がある参照が2つあります。

system.ServiceModelを使用します。
System.Runtime.Serializationを使用します。

その後、この問題は私のプログラムで解決されました。この答えがあなたのお役に立てばと思っています。ありがとう。

0
user3342169

参照にC:¥Program Files(x86)¥Reference Assemblies¥Microsoft¥Framework.NETFramework¥v4.0¥System.Runtime.Serialization.dllを追加してこの問題を解決しました。

0
RotatingWheel