Pregunta

Aquí está mi diseño actual: (la pregunta es el comentario)

class A
{  
    int foo;  
}

class B : A {}

class C : B
{
    void bar()
    {
        //I want to access foo
        base.foo; // Doesn't work
        base.base.foo // Doesn't work, of course
    }
}

Como se puede ver, no puedo acceder a los miembros de A utilizando base en C. ¿Cómo podría acceder a él? Gracias:)

¿Fue útil?

Solución

Si comete foo protegido,

class A
{  
    protected int foo;  
}

A continuación, una base simple hará:

  void bar()
  {
        //I want to access foo
        base.foo; // will work now
        // base.base.foo // Doesn't work, of course
  }

Sin embargo, sería mejor construir un (protegido) en torno a la propiedad foo:

   class A
   {  
        private int _foo;  
        protected int Foo 
        {
           get { return _foo; }
           set { _foo = value; }
        }
   }

Otros consejos

El campo en A se declara privada. Que debe ser protegido para las clases derivadas para acceder a ella.

Ponga público frente int foo;

class A
{  
    public int foo;  
}

class B : A {}

class C : B
{
    void bar()
    {
        //I want to access foo
        base.foo; // Now you can see it
    }
}

Por defecto, a menos que especifique lo contrario todos los miembros son privadas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top