2016-04-03 9 views
0

私のプログラムのユニットテストを書いていますが、2つの異なるプロジェクトに存在するタイプのエラーが発生しました。私はコードにプロジェクト名を追加することによってそれを克服しようとしました:var status = CommunicationsServer.Status()しかしそこにStatus()型は存在しないと言います。ユニットテスト:タイプ "ステータス"は2つのプロジェクトに存在します

ここ

enter image description here

を助けてくださいCommunicationsServer.Statusクラスの最初の数行です:

[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.33440")] 
[System.SerializableAttribute()] 
[System.Diagnostics.DebuggerStepThroughAttribute()] 
[System.ComponentModel.DesignerCategoryAttribute("code")] 
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="http://www.mini.pw.edu.pl/ucc/")] 
[System.Xml.Serialization.XmlRootAttribute(Namespace="http://www.mini.pw.edu.pl/ucc/", IsNullable=false)] 
public partial class Status { 

    private ulong idField; 

    private StatusThread[] threadsField; 

    /// <remarks/> 
    public ulong Id { 
     get { 
      return this.idField; 
     } 
     set { 
      this.idField = value; 
     } 
    } 
//further code 
} 

enter image description here

+0

'CommunicationsServer'と' TaskManager'の両方のタイプの追加のコンテキストがなければ、solutiに。 'Using'ステートメントを' CommunicationsServer'ライブラリに追加するのはなぜですか?静的クラスの場合は、名前空間と静的型の前に 'using static'を入れます。また、実際に 'var status = CommunicationsServer.Status()'とタイプした場合、それは静的型ではなく、VSはあなたが参照しているものを知りません。競合するタイプ(名前空間、クラス宣言など)に関する追加情報を提供してください。より良いヘルプが得られるかもしれません。 –

+0

コンテキストとはどういう意味ですか? CommunicationServerとTaskManagerは共に 'public partial class Status'タイプのStatusクラスを含むプロジェクトです。私はそのクラスのコンストラクタを作ったので、自分のクラスが静的である必要はありません。どのようにステートメントを使用して実装するには? –

+0

私はいくつかの詳細情報で私の質問を編集しました –

答えて

1

を使用すると、2つの異なる種類を持っている場合、彼らは分離しなければなりません名前空間によって。同じタイプのMyTypeを持つProjectOneProjectTwoという2つのプロジェクトがある場合は、文字通りタイプを区別する方法はありません。私はそれがどのように下に動作するか分からないが、私はこれを実装することができたし、Visual Studioに3番目のプロジェクトの型への参照をコンパイルすることができませんProjectThree。正確にあなたの質問にあるように。

何らかの理由で、自動生成されたXMLからC#ファイルが、生成するクラスの周りに常に名前空間を設定するとは限りません。プロジェクトに関連したユニークなネームスペースを提供するだけで、あなたはうまくいくはずです。あなたのCommunicationsServerで

は、ファイル生成:

namespace CommunicationsServer.Xsd 
{ 
    public partial class Status() 
    { 

    } 
} 

をおよびTaskManagerでファイルを生成:

namespace TaskManager.Xsd 
{ 
    public partial class Status() 
    { 

    } 
} 

はその後ProjectThreeにあなたが使用して文using CommunicationsServer.Xsdを置くことができるのいずれか、または完全にタイプ資格:var status = new CommunciationsServer.Xsd.Status();

+0

Omg!できます!あなたの時間と努力のために大変ありがとうございます –

+1

私は助けてくれることを嬉しく思います! –

関連する問題