簡體   English   中英

Asp.Net和命名空間分為多個.cs文件

[英]Asp.Net and namespaces splitted over multiple .cs files

在我正在構建的站點中,我在wwwroot的子目錄下有2個.cs文件。 所述文件包含一堆實用程序函數,並且屬於同一名稱空間(即:名稱空間myUtils)

作為同一命名空間中這2個文件的內容,我希望能夠彼此使用某些類,反之亦然,就像所有代碼都在一個大文件中一樣,但顯然不起作用

示例代碼:

文件1:

using System; 
using System.Collections;

namespace myincludes
{
    public static class myConfig
    {
    public static String dbaddress = "127.0.0.1";
    }
}

文件2:

using System; 
using System.Collections;

namespace myincludes
{
    public static class myUtil
    {
        public static void doStuff()
        {
            String test = myConfig.dbaddress;
        }
    }
}

aspx頁面:

<%@ Page Language="C#" %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.Odbc" %>
<%@ Import Namespace="System.Security.Cryptography" %>
<%@ Import Namespace="System.Collections.Generic" %>
<%@ Assembly src="./includes/file1.cs" %>
<%@ Assembly src="./includes/file2.cs" %>

<%%>

<html>
<head></head>
<body>hi</body>
</html>

我收到一個編譯錯誤,說

Compiler Error Message: CS0103: The name 'myConfig' does not exist in the current context

基本上沒有關於Assembly src指令的用法的文檔。 似乎常見的方法是生成二進制DLL,但我寧願不...

public static class myUtil
{
    public static string test { get{return myConfig.dbaddress;}}

    public static string SomeMethod()
    {
       return myConfig.dbaddress;
    }

}

您必須從有效位置調用代碼。 現在,您的呼叫在任何方法或屬性之外。 它不在有效位置。 在上面的示例中,我將其包裝在屬性和方法中。

您的課程應該按預期工作,沒有任何問題。 我從您的Assembly指令中假設您要在ASPX標記中使用myConfig 為此,只需導入名稱空間即可,而不要使用Assembly指令:

<%@ Import Namespace="myincludes" %>

然后,您可以在標記中使用myConfig

  dbaddress is: <%=myConfig.dbaddress %>  

聽起來您可能正在使用網站項目,而不是預先編譯的Web應用程序。 如果僅將.cs文件轉儲到隨機目錄中,則ASP.NET將不會找到它,除非您明確引用它*。

嘗試將文件放在Web根目錄下的特殊目錄App_Code中。 放置在那里的源文件將被自動編譯。 有關其他說明,請參見此MSDN頁面

*:例如,ASP.NET Web窗體頁面通常以@Page指令開頭,其中CodeFile屬性指向源文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM