Tengo algunas preguntas relacionadas con el diseño de mi clase User
pero son lo suficientemente diferentes como para que piensen que deberían ser preguntas independientes.Intentando heredar tres clases base y no puedo
Por lo tanto, el primero está relacionado con la herencia de las clases base. Actualmente estoy heredar dos clases, ProfileBase
y ISessionMgrEntry
como tal:
public class User : ProfileBase, ISessionMgrEntry
Pero, también quiero heredar una tercera clase, MembershipUser
, así:
public class User : ProfileBase, MembershipUser, ISessionMgrEntry
Sin embargo, el won compilador' Déjame hacer eso. ¿Por qué? Y, ¿cómo consigo alrededor de esto?
Gracias.
PS - ASP.NET 3.5/C#
EDITAR
Hola. Creo que la solución a continuación puede funcionar para lo que estoy tratando de lograr. Parece bastante simple y directo. Estoy haciendo esto para poder crear un objeto completo/combinado User
. ¿Alguien ve alguna razón por la cual esto podría causar problemas? Uno que surgió mientras estaba ding es superposición de propiedades. Por ejemplo, ambos MembershipUser
y ProfileBase
comparten "UserName
". ¿Debo simplemente elegir uno u otro o será un defecto de diseño? Sugerencias? Gracias de nuevo.
public class User
{
#region Constructors
private readonly MembershipUser _MembershipUser;
private readonly ProfileBase _ProfileBase;
#endregion
public User()
{
_MembershipUser = new MembershipUser();
_ProfileBase = new ProfileBase();
}
public string Comment
{
get { return _MembershipUser.Comment as string; }
set { _MembershipUser.Comment = value; }
}
public bool IsAnonymous
{
get { return _ProfileBase.IsAnonymous as bool; }
}
....
}
¿Por qué hacer 'como' en los puntales? – ChaosPandion
Tienes razón, pensé que se veía apagado. Estaba siguiendo esta convención pero me doy cuenta de que es un caso diferente: [SettingsAllowAnonymous (false), CustomProviderData ("IPAddress; string")] cadena pública IPAddress {get {return base ["IPAddress"] como cadena; } set {base ["IPAddress"] = valor; }} –