[DataContract]の名前空間


230

[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ディレクティブまたはアセンブリ参照がありませんか?)

適切な名前空間を使用していませんか?


VS 2017を使用すると、コンパイラエラーが発生し、ビルドできません。エラーリストにメッセージが表示されないか、まったく表示されません。DataContractの構文カラーリングはありません。
dudeNumber4

@ dudeNumber4プロジェクトの追加/参照を右クリックします。ダイアログでSystem.Runtime.Serializationを見つけ、チェックボックスをチェック状態にします。次に、「OK」を押します
Sim Mak

回答:


433

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

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


59
....そしてそのアセンブリはデフォルトでは参照されないためReferences -> Add Reference、ソリューションエクスプローラーに移動してアセンブリ参照を追加する必要があります...
marc_s

11
それだけです、私のソリューションには参照がありませんでした!参照が必要な場合、その行でエラーが発生すると考えましたusing System.Runtime.Serialization;。私は間違っていたと思います:)
Otiel 2011

2
ああ。なぜ地球上でusing声明に誤りがないのですか?それは私には理にかなっているようです。
Yatrix 2013年

7
別のdllがその名前空間を使用しているためと思います(そうしないと、エラーが発生します)
Gui

4
ありがとうございました!Microsoftのサンプルドキュメントではこれについて言及していません。
BobRodes 2013


5

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

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


5

Visual Studio for .Net 4.0フレームワークでは、

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

0

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

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

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


0

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.