C#web项目抱怨一堂课

时间:2012-04-20 13:06:35

标签: c# asp.net

我创建了一个新项目(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。 但是如果类文件在同一个项目中,我是否必须包含引用?我甚至尝试构建我的项目,它首先使用我的解决方案文件Shipper.dll的名称生成了一个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 name BusinessLayer does not exist in the namespace Shipper (are you missing an assembly reference)?

7 个答案:

答案 0 :(得分:5)

你的......

public static int JustSomeTest()
 {
   return 1;
 }

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

(至少在你的例子中,它可能只是一个错字,但你需要给我们一个工作的例子)

答案 1 :(得分:2)

你的方法不在课堂上。这是禁忌。试试这个:

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

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

答案 2 :(得分:0)

使用Shipper.BusinessLayer;

要尝试的事情

  1. 通过在解决方案资源管理器中查看目标项目的属性,验证命名空间是您认为的命名空间。
  2. 在Visual Studio中使用对象浏览器并找到命名空间并验证是否可以看到该类。如果对象浏览器看不到它,代码也都看不到。

答案 3 :(得分:0)

尝试删除命名空间声明:

using System;

public static class BL
{
    public static int JustSomeTest()
    {
       return 1;
    }
}

答案 4 :(得分:0)

This forum thread on Wrox也可能有用。

答案 5 :(得分:0)

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

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

然后再次检查你的intellisense,我怀疑你是referencin的一个oleder版本的Shipper dll。

答案 6 :(得分:0)

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

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