2017-03-28 168 views
-1

,所以我有嵌套类型类是去是这样的:静态嵌套类型

namespace MyNamespace 
{ 
    public class User 
    { 
     private int id = 0; 
     private string userId = ""; 
     private string userPassword = ""; 

     public int Id 
     { 
      get { return id; } 
      set { id = value; } 
     } 

     public string UserId 
     { 
      get { return userId; } 
      set { userId = value; } 
     } 

     public string UserPassword 
     { 
      get { return userPassword; } 
      set { userPassword = value; } 
     } 


     public User() 
     { 
      id = 0; 
      userId = ""; 
      userPassword = ""; 
     } 


     public static class SignonInfo 
     { 
      private static string sesstoken = ""; 
      private static DateTime sessstart = new DateTime(); 

      public static string SessToken 
      { 
       get { return sesstoken; } 
       set { sesstoken = value; } 
      } 

      public static DateTime SessStart 
      { 
       get { return sessstart; } 
       set { sessstart = value; } 
      } 
     } 
    } 
} 

我的最终目标在这里是能够访问这样的嵌套静态类:

User user = new User(); 
string token = user.SignonInfo.SessToken; 

我试图避免实例化这样的类:

User.SignonInfo user = new User.SignonInfo() 

我需要能够访问User和SignonInfo cla的属性小规模企业。

有人能帮助我走上正轨或打我一下,并告诉我我做的一切都错了吗?

TIA

+1

如果您尝试编译代码,编译器将*完全*您做错了什么。相信它;它知道它在说什么。 – Servy

+0

其实上面的代码编译得很好,我只是无法访问xxxxxx.SignonInfo.SessToken,因为我已经在上面描述过了。 – Nugs

+0

一个代码片段编译得很好,另一个没有。所以你不能这样做,不编译。按照编译的方式,你可以做得很好。无论哪种方式,您都可以通过简单地编译代码来明确地获得问题的答案。你不需要我们告诉你编译器已经告诉你什么。 – Servy

回答

0

的问题是,它是一个静态类,所以“实例”没有访问它。这是一件好事,因为它可以防止全球状态伪装成一个封装良好的对象。

我建议把嵌套类非静态,并具有根据需要调用者的User类创建一个实例(也许增加一个public SignonInfo GetSignonInfo()方法。)

+0

谢谢。这很有帮助。 – Nugs

+0

如果你这样做,那么代码将不会有问题说明它应该具有的语义。 – Servy

+0

那么,它是迄今为止我得到的最好回应。至少现在我知道我为什么错了,并有一个合作的建议。 – Nugs

-1

您试图访问你的嵌套类为如果它是外部类的实例的成员。

变化

string token = user.SignonInfo.SessToken;

User.SignonInfo.SessToken;

注意,不要让每外实例的静态内部类的实例,只有一个用于整个外类。

+0

这是问题本身提到的所有信息。 – Servy

+0

不,它确实不是。 – JamesFaix

+0

从这个问题中,“我试图避免像这样实例化类:'User.SignonInfo user = new User.SignonInfo()'” – Servy