2

如何在相同或不同的命名空间但在同一个应用程序中使用“公共变量”?

例如:

BookStore Web 应用程序中的第一个命名空间

namespace BookStore
{
    public partial class index : System.Web.UI.Page
    {
        public string command; // the public variable declared

第二个命名空间,在同一 BookStore 应用程序中

namespace Admin.BookStore // here i try to include the BookStore namespace..
{
    public partial class admin : System.Web.UI.Page
    {
        void access()
        {
            command = "something text" ;

在这里,我认为command应该在智能感知中看到。我认为因为它是一个公共变量,但它没有出现。

4

4 回答 4

1

在管理类中,您还可以将以下内容添加到文件顶部:

Using BookStore;

但是, index 不是静态类,因此您必须拥有该类的实例才能使用命令字段;

Index indexInstance = new Index();
indexInstance.command = "something text";
于 2013-04-12T08:37:24.507 回答
1

有很多方法可以做到这一点,但令人担忧的是,您正试图跨页面设置相同的变量——没有会话/静态,这将不起作用。

我的方式(对于初学者)是开始使用类继承。

尝试这个:

namespace BookStore
{
    public partial class index : BasePage
    {

    }
}

namespace Admin.BookStore
{
    public partial class index : BasePage
    {
        void access()
        {
            base.command = "something text"; // This accesses the BasePage variable
        }
    }
}

namespace BookStore
{
     public class BasePage : System.Web.UI.Page
     {
          // public static string command { get; set; } // Bad practice IMO
          public string command 
          {
               get {
                   if(Session["command"] != null) return Session["command"].ToString();
                   return String.Empty;
               }
               set {
                   Session["command"] = value;
               }
          }  
     }
}
于 2013-04-12T08:40:23.593 回答
0

在包含该类的文件中admin,滚动到页面顶部并插入该行

using BookStore;

请注意,这通常位于您要添加到的文件中的命名空间声明之上。这使您的类/页面对将要使用它的类可见。

要遵循您提供的示例,您现在需要一个类的实例才能访问公共字段:

var myIndexObject = new index();
myIndexObject.command = "my value";
于 2013-04-12T08:41:09.433 回答
0

要访问不同命名空间中的类,您需要从应用程序根命名空间中指定或“使用”完整的命名空间。

例如:如果您的应用程序根命名空间是AppNameSpace

AppNameSpace.BookStore.index.command = "..."

或者

using AppNameSpace.BookStore
'
'
'
index.command = "..."
于 2013-04-12T08:59:06.163 回答