我正在为我的程序编写单元测试,并且在两个不同的项目中遇到了我的类型错误。我试图通过在代码中添加项目名称来克服它:var status = CommunicationsServer.Status()
然后它说那里没有Status()类型。
请帮忙
以下是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
}
答案 0 :(得分:1)
如果您有两种不同的类型,则必须用命名空间分隔它们。如果您有两个项目ProjectOne
和ProjectTwo
,且类型MyType
相同,则根本无法区分该类型。我不确定它是如何工作的,但是我能够实现它,并且无法让Visual Studio在第三个项目ProjectThree
中编译我对类型的引用。正如你在问题中所做的那样。
出于某种原因,自动生成的xml到C#文件并不总是在它生成的类周围放置命名空间。只需提供与项目相关的唯一命名空间,您就应该好好去。
在CommunicationsServer生成的文件中:
namespace CommunicationsServer.Xsd
{
public partial class Status()
{
}
}
在TaskManager生成的文件中:
namespace TaskManager.Xsd
{
public partial class Status()
{
}
}
然后在ProjectThree
中,您可以使用using语句using CommunicationsServer.Xsd
或完全限定类型:var status = new CommunciationsServer.Xsd.Status();