静态嵌套类型

时间:2017-03-28 21:41:30

标签: c#

所以我有嵌套的类型类,如下所示:

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类的属性。

有人可以帮助我走上正轨,或者告诉我,我做错了吗?

TIA

2 个答案:

答案 0 :(得分:0)

问题在于它是一个静态类,因此“实例”无法访问它。这是一件好事,因为它可以防止全局状态伪装成封装良好的对象。

我建议使嵌套类非静态,并让User类根据调用者的需要创建一个实例(可能添加public SignonInfo GetSignonInfo()方法。)

答案 1 :(得分:-1)

您正在尝试访问嵌套类,就像它是外部类实例的成员一样。

更改

User.SignonInfo.SessToken;

{{1}}

请注意,每个外部实例都没有获得静态嵌套类型的实例,整个外部类只有一个实例。