Je rencontre des problèmes. J'ai une sous-classe basée sur exemple d'interface fluide de Randy Patterson ici:Besoin d'aide pour accéder aux propriétés dans la classe d'inclusion de la sous-classe
Randy Patterson's Fluent Interface Design Page
Je suis le sous-classement d'une classe utilisateur et besoin de passer les propriétés définies dans à la méthode ci-dessous CreateNewUser au sein de la sous-classe UserFluentInterface.
public void CreateNewUser()
{
try
{
User user = (User)_User;
MembershipCreateStatus status;
MembershipUser memuser = _membership.CreateUser(user, out status);
}
catch (Exception e)
{
string message = e.Message;
}
}
et _membership.CreateUser a la signature:
public MembershipUser CreateUser(User user, out MembershipCreateStatus status);
Je reçois l'erreur:
Cannot access a non-static member of outer type 'MyProject.Schema.User' via nested type 'MyProject.Schema.User.UserFluentInterface'
Je ne sais pas comment résoudre ce problème. Code est la suivante:
User user = _someAPI.GetUserProfile(txtEmail.Text);
user.Set
.Email(txtEmail.Text)
.Password(txtPassword.Text)
.CreateNewUser();
Maintenant, j'ai une classe utilisateur avec une sous-classe:
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;
}
}
}
}
Merci. Oui, j'ai essayé cela mais continuez à obtenir l'erreur suivante (d'où le post): Impossible d'accéder à un membre non statique de type externe "MyProject.Schema.User" via le type imbriqué "MyProject.Schema.User.UserFluentInterface" Des pensées? –
Lisez cet article: http://www.codeproject.com/KB/cs/nested_csclasses.aspx Fondamentalement, cela signifie que vous ne pouvez pas accéder aux membres de l'utilisateur dans UserFluentInterface. Cependant, vous pouvez accéder à ces membres dans UserFluentInterface via l'objet '_User', comme' _User.Email', et pas seulement 'Email'. Je pense que vous feriez mieux de poster le code complet de 'UserFluentInterface' pour voir exactement où cette erreur se produit. – Weiming
Bonjour. Merci encore. Il n'y a pas beaucoup plus à la classe UserFluentInterface, sauf pour un tas de getter et setters qui n'ont vraiment rien à voir avec le problème. J'ai posté un lien vers où je reçois le code si cela est utile. Si vous ressentez encore le besoin d'un vidage de code, faites-le moi savoir et je le ferai. J'ai également posté la classe CreateNewUser en haut car c'est là que l'erreur est lancée. il a quelque chose à voir avec la ligne _membership.CreateNewUser et "_memberhip" est ce dont se plaint l'intellisense. Je suis vraiment coincé ici .. aide beaucoup apprécié. Merci encore. –