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、コードビハインドの私のページの1つで、私はやろうとしました:

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 nameエラーはBusinessLayerを読み取りますdoes 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' is-名前空間だけにメソッドを定義することはできません。

(少なくともあなたの例からは、それは単なるタイプミスかもしれませんが、それならあなたは私たちに実用的な例を与える必要があるでしょう)

于 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

試す

Shipper.BusinessLayerを使用します。

試すべきこと

  1. ソリューションエクスプローラーでターゲットプロジェクトのプロパティを表示して、名前空間が信頼できる名前空間であることを確認します。
  2. Visual Studioで、オブジェクトブラウザーを使用して名前空間を見つけ、クラスが表示されることを確認します。オブジェクトブラウザがそれを認識できない場合、コードも認識できません。
于 2012-04-20T13:09:06.087 に答える
0

名前空間宣言を削除してみてください:

using System;

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

Wrox に関するこのフォーラム スレッドも役立つ場合があります。

于 2012-04-20T13:29:33.563 に答える
0

まず、シッパー DLL ではなく、シッパー プロジェクトへの参照を追加したことを確認します。

次に、Shipper プロジェクトが再ビルドされていることを確認します。クリーンアップとビルドを行うのが最善の策です。

次に、もう一度インテリセンスをチェックしてください。Shipper dll の古いバージョンを参照していると思われます。

于 2012-04-20T13:50:30.890 に答える
0

クラスを静的ではなく、メソッドを静的のままにしてみてください。(静的クラスを使用したことがないためですが、違いはないようです)

または、深刻な問題があり、解決できない場合は、Resharper のコピーをインストールしてください。おそらく役に立ちます!

于 2012-04-20T14:16:21.033 に答える