在c中添加项目引用#
我有一些奇怪的问题。我有以下结构在c中添加项目引用#
http://i33.tinypic.com/10fbzbq.jpg
的解决方案正如你可以看到,当我wonna导入它给出了一个错误的VDB.Common.RequestAndResponses。 dat类库的命名空间是VDB.Common.RequestAndResponses。
我是新来的c#,所以它可能是我忘了一些愚蠢的东西。
我强烈怀疑Base.cs
(在VDB.Common.RequestAndResponses
项目显示的只有C#文件)不实际上在VDB.Common.RequestAndResponses
命名空间声明类型 - 或者说,它只是声明了一个内部(而不是公共)类型。例如,请注意您要创建的代码位于VDB.Client.Infrastructure
项目下,但仅在Agatha
名称空间中声明类 - 不是VDB.Client.Infrastructure.Agatha
,这可能是您的意图。也许你在Base.cs
中有类似的东西吗?
没有看到Base.cs中的代码,我们看不到有什么问题。如果你只是发布一个片段 - 只是名称空间和类声明 - 这将是有益的。
请注意,虽然类库具有默认名称空间,但不会将其作为源文件实际声明的任何内容的前缀。换句话说,在Acme.Widgets
图书馆,如果你有一个声明:
namespace Web
{
public class Button {}
}
,只会声明的类型Web.Button
,不Acme.Widgets.Web.Button
。
编辑:OP的“答案”证实了我的想法...基本上它根本没有声明一个名称空间。它应该是这样的:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Agatha.Common;
namespace VDB.Common.RequestAndResponses
{
public abstract class BaseRequest :Request
{
// Code
}
public abstract class BaseResponse : Response
{
// Code
}
}
我也要强烈提醒,这些类应放在两个单独的文件,BaseRequest.cs
和BaseResponse.cs
。我也很惊讶地看到Agatha.Common
的参考 - 不应该是VDB.Common.Agatha
或类似的东西?
+1从问题 – 2010-08-22 20:22:56
右键单击解决方案资源管理器中的“VDB.Common.RequestAndResponses”引用,然后选择“在对象浏览器中显示”,确保在其中找到具有精确拼写和大小写的名称空间。
尝试在客户端代码中使用Base类并将其悬停在其上,并允许Visual Studio IDE提示您添加适当的名称空间。 Base类中定义的名称空间可能与您的想法不同。
编辑 作为乔恩为证明他的回答的第二部分 - 代码文件的名称不会自动对应的命名空间。
Base.cs文件看起来像这样。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Agatha.Common;
public abstract class BaseRequest :Request
{
public string UserName { get; set; }
public string UserDomainName { get; set; }
public string ClientLanguageCode { get; set; }
public DateTime ClientCreated { get; set; }
public DateTime ClientSent { get; set; }
public DateTime ServerReceived { get; set; }
public DateTime ServerProcessed { get; set; }
public void BeforeSend(IUserContext context)
{
ClientSent = DateTime.UtcNow;
UserName = context.UserName;
UserDomainName = context.UserDomainName;
ClientLanguageCode = context.LanguageCode;
}
}
public abstract class BaseResponse : Response
{
public DateTime ServerCreated { get; set; }
public DateTime ServerProcessed { get; set; }
public string[] ValidationErrors { get; set; }
public bool IsValid
{
get { return Exception == null & !ValidationErrors.Any(); }
}
}
@SvenVdb推断出的答案非常好:这应该是对问题的修改,但它基本上证实了我的想法。这没有声明一个命名空间,所以它在“根”命名空间中。你应该在整个事情上有“命名空间VDB.Common.RequestAndResponses”。 – 2010-08-22 21:05:18
你的文件没有保存,你认为这可能是问题吗? – 2010-08-22 20:14:48