0

我创建了一个新项目(C# 中的 Web 项目)。在我的项目中创建了一个名为 App_Code 的新文件夹。然后,我继续添加一个具有以下内容的类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Shipper.DataLayer;

namespace Shipper.BusinessLayer
{
    public static class BL
    {
        public static int JustSomeTest()
        {
            return 1;
        }
    }
}

在我后面的代码中的一个页面default.aspx中,我试图做:

int i = BL.JustSomeTest();

当我输入时,我没有得到任何智能感知BL.。它说我缺少一个程序集或参考。或者它会说The name BL does not exist in the current context。但是如果类文件在同一个项目中,我是否必须包含参考?我什至尝试构建我的项目,它首先生成了一个带有我的解决方案文件名称的 dll 文件,Shipper.dll但是一旦我添加了这个引用,它就会说The name BL does not exist in the current context.

在我的 default.aspx 页面中,我尝试添加 using 语句

using Shipper.

但是一旦我这样做了,我的命名空间 BusinessLayer 就没有显示出来......我很困惑?

编辑

这是default.aspx:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Shipper.BusinessLayer;

namespace Shipper
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                SetDefaults();
                int i = BL.JustSomeTest();
            }
        }
   }
}

这是我的BL.cs文件:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Shipper.DataLayer;

namespace Shipper.BusinessLayer
{
    public static class BL
    {
        public static int JustSomeTest()
        {
            return 1;
        } 
    }
}

错误读取The type or namespace nameBusinessLayerdoes not exist in the namespace Shipper (are you missing an assembly reference)?

4

7 回答 7

5

您的...

public static int JustSomeTest()
 {
   return 1;
 }

...是out of the 'class' - 您不能单独为命名空间定义方法。

(至少从您的示例来看,这可能只是一个错字,但您需要给我们一个工作示例)

于 2012-04-20T13:09:39.817 回答
2

你的方法在课堂之外。那是不行的。试试这个:

namespace Shipper.BusinessLayer
{
    public static class BL
    {
        public static int JustSomeTest()
        {
            return 1;
        }
    }
}

此外,如果您希望 BL 弹出,请确保引用了命名空间 ( using Shipper.BusinessLayer)。但是,为什么这是一个静态类?我认为您可能不希望这样做,除非您正在制作扩展方法。

于 2012-04-20T13:10:11.923 回答
0

尝试让你的类不是静态的,但让你的方法保持静态。(只是因为我从不使用静态类,但它似乎没有任何区别)

或者,如果您遇到严重问题并且无法解决,请安装 Resharper 的副本,它可能会有所帮助!

于 2012-04-20T14:16:21.033 回答
0

Wrox 上的这个论坛帖子可能也很有用。

于 2012-04-20T13:29:33.563 回答
0

尝试删除命名空间声明:

using System;

public static class BL
{
    public static int JustSomeTest()
    {
       return 1;
    }
}
于 2012-04-20T13:16:12.603 回答
0

尝试

使用 Shipper.BusinessLayer;

要尝试的事情

  1. 通过在解决方案资源管理器中查看目标项目的属性来验证名称空间是否是您认为的名称。
  2. 在 Visual Studio 中,使用对象浏览器并定位命名空间并验证可以看到类。如果对象浏览器看不到它,代码也看不到。
于 2012-04-20T13:09:06.087 回答
0

首先要确保您添加了对 Shipper 项目的引用,而不是 Shipper DLL。

然后确保重新构建了 Shipper 项目,最好进行清理和构建。

然后再次检查您的智能感知,我怀疑您引用的是 Shipper dll 的旧版本。

于 2012-04-20T13:50:30.890 回答