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