Múltiples clases base para una clase derivada, de la herencia en C#

Si tengo una clase con dos clases base :

public partial MyClass : Base1, Base2 {


}

Para llamar al constructor de la Base1 yo haría esto:

public MyClass() : base(myParamForBase1); 

Pero tengo que llamar a la segunda clase base para llegar a la base el valor de init como este:

base.OnInit(e); 

No puedo hacer lo anterior, por supuesto, porque C# piensa que me estoy refiriendo a Base1 no Base2, ¿cómo puedo resolver esto? En otras palabras ¿cómo puedo referir a Base2?

  • Usted no puede tener varias clases base. Usted puede tener una clase base única e infinita interfaces
  • La necesidad de la herencia múltiple siempre resultados from un mal diseñado la estructura de la clase. Publicar un ejemplo de lo que usted necesita. Estoy seguro de que hay un camino a la estructura de manera que usted no necesita la herencia múltiple (que no existe de todos modos)
  • claro, me estoy convirtiendo ahora mismo creer o no un proyecto de MVC a un estándar .Proyecto de RED de SharePoint. Me pueden enviar a mi situación y sería estupendo si pudieras ayudarme
  • QUÉ. Oh, veo que no conocía a C# tiene herencia múltiple. Le sonaba como si fuera capaz de compilar todos los de arriba. Pensé C# cambió mucho en la versión más reciente
  • lol sí, me disculpo por mi ignorancia
InformationsquelleAutor anpatel | 2013-05-27

2 Kommentare

  1. 5

    C# no admite varios de herencia de clases. Sólo se puede implementar varias interfaces, y heredar de (ampliar) una única clase base.

    • Tenía miedo de que esta sería la respuesta. Esto lo vi varias veces, pero solo quería aferrarse a la esperanza
    • es posible que desee buscar en el diamante problema para una razón por la que no volvería a trabajar en c#.
    • Usted puede, sin embargo, el trabajo con la cascada de la herencia. Grandchild hereda de Child, que inhertis de Mother.
    • He probado la cascada de la herencia en primer lugar, pero tuve que hacer, porque no podía encontrar una manera de hacer varios eventos Page_Load de trabajo.
    • ty, aquí un enlace a pesar de que para los noobs como yo: nazar-merza.com/index.php/getting-started/… , explica el diamante problema realmente bien, el ejemplo de los animales creo que no fue la mejor pero sigue siendo un buen recurso
  2. 0

    Lo que puedes hacer es, hacer una clase que hereda de la primera base

    algo como esto

        public Base2 : Base1 {
    
    
        } 
        public MyClass : Base2  {
    
    
        }

    No es que me guste esto, pero puede ayudar en algunos casos

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea