我有问题。我有一个基于兰迪·帕特森的流畅这里例如接口的子类:需要帮助访问属性从子类包围类
Randy Patterson's Fluent Interface Design Page
我继承用户类,并且需要通过在其设置为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);
我收到错误:
Cannot access a non-static member of outer type 'MyProject.Schema.User' via nested type '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;
}
}
}
}
谢谢。是的,我试过,但不断得到 以下错误(因此发布): 无法通过嵌套类型'MyProject.Schema.User.UserFluentInterface' 访问外部类型'MyProject.Schema.User'的非静态成员 有什么想法? – 2010-01-28 22:26:09
阅读本文:http://www.codeproject.com/KB/cs/nested_csclasses.aspx 基本上,它意味着你不能访问UserFluentInterface中的用户的成员。 但是,您可以通过'_User'对象访问UserFluentInterface中的成员,比如'_User.Email',而不仅仅是'Email'。 我想你最好发布'UserFluentInterface'的完整代码来查看究竟发生了什么错误。 – Weiming 2010-01-28 23:30:13
嗨。再次感谢。 UserFluentInterface类没有什么更多,除了更多的getter和setter与这个问题无关。如果有帮助,我已经发布了一个链接,指向我获取代码的位置。如果你仍然觉得需要代码转储让我知道,我会这样做。我也发布了CreateNewUser类,因为这是抛出错误的地方。它与_membership行有关.CreateNewUser和“_memberhip”是intellisense抱怨的。我真的被困在这里..非常感谢。再次感谢。 – 2010-01-29 00:52:33