2016-04-03 62 views
0

我正在爲我的程序編寫單元測試,並且遇到了兩種不同項目中存在的我的類型錯誤。我試圖通過在代碼中添加一個項目名稱來克服它:var status = CommunicationsServer.Status()但是它說那裏不存在Status()類型。單元測試:兩個項目中存在「狀態」類型

請幫

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上。爲什麼不在'CommunicationsServer'庫中添加'using'語句?如果它是一個靜態類,則在名稱空間和靜態類型之前放置'using static'。還有可能的是,如果你實際輸入'var status = CommunicationsServer.Status()',它不是一個靜態類型,VS不知道你在引用什麼。請提供有關衝突類型(名稱空間,類聲明等)的其他信息,您可能會得到更好的幫助。 –

+0

你是什麼意思的上下文? CommunicationServer和TaskManager都是包含一個Status類的項目,它的類型爲public partial class Status,我爲這個類做了一個構造函數,我不需要我的類對它是靜態的。如何實現使用語句? –

+0

我編輯了我的問題一些更多的信息 –

回答

1

如果您有兩種不同的類型,它們必須分開由一個命名空間。如果您有兩個項目,ProjectOneProjectTwo,與MyType相同,則確實無法區分該類型。我不確定它是如何工作的,但我能夠實現這一點,並且無法讓Visual Studio在第三個項目ProjectThree中編譯我對該類型的引用。就像你在你的問題中一樣。

由於某些原因,自動生成的xml到C#文件並不總是在它生成的類的周圍放置一個命名空間。只需提供一個與項目相關的獨特命名空間,你應該很好。

在你CommunicationsServer生成的文件:

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

    } 
} 

而且在任務管理器生成的文件:

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

    } 
} 

然後在ProjectThree你可以把using語句using CommunicationsServer.Xsd或完全限定的類型:var status = new CommunciationsServer.Xsd.Status();

+0

Omg!有用!非常感謝您的時間和精力 –

+1

不客氣,很高興我能幫上忙! –