繁体   English   中英

在C#中添加对项目的引用

[英]Add reference to project in c#

我有一些奇怪的问题。 我有以下结构的解决方案

http://i33.tinypic.com/10fbzbq.jpg

如您所见,当我要导入VDB.Common.RequestAndResponses时,它将产生错误。 dat类库的名称空间是VDB.Common.RequestAndResponses。

我是c#的新手,所以可能是我忘记了一些愚蠢的东西。

我强烈怀疑Base.cs (中所示的只有C#文件VDB.Common.RequestAndResponses项目) 实际上并没有宣布在a型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.csBaseResponse.cs 我也很惊讶地看到对Agatha.Common的引用-那不应该是VDB.Common.Agatha或类似的东西吗?

在解决方案资源管理器中的“ VDB.Common.RequestAndResponses”引用上单击鼠标右键,然后选择“在对象浏览器中显示”,确保在该名称空间中找到准确的拼写和大写字母。

尝试在客户端代码中使用Base类,并将其悬停在上面,并允许Visual Studio IDE提示您添加适当的名称空间。 在基类中定义的名称空间可能与您所想的不同。

编辑正如乔恩在回答第二部分中所展示的那样-代码文件的名称不会自动对应于名称空间。

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(); }
    }

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM