Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 需要帮助从子类访问封闭类中的属性吗_C#_Subclass - Fatal编程技术网

C# 需要帮助从子类访问封闭类中的属性吗

C# 需要帮助从子类访问封闭类中的属性吗,c#,subclass,C#,Subclass,我有问题。我有一个子类基于Randy Patterson的fluent接口示例: 我正在子类化一个用户类,需要将其中设置的属性传递给UserFluentInterface子类中下面的CreateNewUser方法 public void CreateNewUser() { try { User user = (User)_User;

我有问题。我有一个子类基于Randy Patterson的fluent接口示例:

我正在子类化一个用户类,需要将其中设置的属性传递给UserFluentInterface子类中下面的CreateNewUser方法

public void CreateNewUser()
              {

                    try
                    {
                        User user = (User)_User;

                        MembershipCreateStatus status;
                        MembershipUser memuser = _membership.CreateUser(user, out status);

                    }
                    catch (Exception e)
                    {
                        string message = e.Message;
                    }

                }
并且_membership.CreateUser具有以下签名:

public MembershipUser CreateUser(User user, out MembershipCreateStatus status);
我得到一个错误:

无法访问的非静态成员 外部类型“MyProject.Schema.User”通过 嵌套类型 'MyProject.Schema.User.UserFluentInterface'

我不知道如何解决这个问题。代码如下:

User user = _someAPI.GetUserProfile(txtEmail.Text);

user.Set
  .Email(txtEmail.Text)
  .Password(txtPassword.Text)
  .CreateNewUser();
现在,我有一个用户类和一个子类:

 public class User : ProfileBase, ISessionMgrEntry
    {
        MyMembershipProvider _membership = null;
        UserFluentInterface _set = null;

        public User()
        {
            _membership = (MyMembershipProvider)Membership.Providers["MyMembershipProvider"];
            _set = new UserFluentInterface(this);
        }

        public UserFluentInterface Set
        {
            get { return _set; }
        }

        #region ProfileBase Members

            [SettingsAllowAnonymous(false), CustomProviderData("Email;string")]
            public string Email { get { return base["Email"] as string; } set { base["Email"] = value; } }

[SettingsAllowAnonymous(false), CustomProviderData("Password;string")]
            public string Password { get { return base["Password"] as string; } set { base["Email"] = value; } }


           public class UserFluentInterface
            {
                private readonly User _User;

                public UserFluentInterface(User User)
                {
                    _User = User;
                }

                public UserFluentInterface Email(string email)
                {
                    _User.Email = email;
                    return this;
                }

                public UserFluentInterface Password(string password)
                {
                    _User.Password = password;
                    return this;
                }

                public void CreateNewUser()
                {

                    try
                    {
                       User user = ???? // HOW DO I ACCESS THE PROPERTIES THAT WERE ORIGINALLY SET AND PASS THEM AS AN OBJECT BELOW?                        

                        MembershipUser memuser = _membership.CreateUser(user);

                    }
                    catch (Exception e)
                    {
                        string message = e.Message;
                    }

                }

            }

       }

如果不需要
\u User
的副本,您可以只编写
User=\u User


否则,请复制一份
\u User
并将其传递。

我认为您必须将用户和成员身份都传递到您的UserFluentInterface:

            public class UserFluentInterface
            {
                private readonly User _User;
                private readonly Membership _Membership;

                public UserFluentInterface(User User, Membership membership)
                {
                    _User = User;
                    _Membership = membership;
                }
            }

然后使用_会员而不是_会员。在CreateNewUser()方法中

谢谢。是的,我试过了,但一直出现以下错误(因此帖子):无法通过嵌套类型“MyProject.Schema.User”访问外部类型“MyProject.Schema.User”的非静态成员有什么想法吗?阅读本文:基本上,这意味着您无法访问UserFluentInterface中的用户成员。但是,您可以通过
\u User
对象访问UserFluentInterface中的这些成员,如
\u User.Email
,而不仅仅是
Email
。我认为您最好发布
UserFluentInterface
的完整代码,以查看此错误发生的确切位置。您好。再次感谢。UserFluentInterface类除了一堆与问题无关的getter和setter之外,没有更多内容。如果有帮助的话,我已经发布了一个链接,指向我获取代码的地方。如果你仍然觉得需要代码转储,让我知道,我会这样做。我还将CreateNewUser类张贴在顶部,因为这是引发错误的地方。它与行_membership.CreateNewUser有关,“_membership”是intellisense抱怨的内容。我真的被困在这里了。。非常感谢你的帮助。再次感谢。使用just_用户不起作用,就像你的密码和电子邮件方法一样?(MembershipUser memuser=_membership.CreateUser(_User);)