4 Stimmen

Mehrfachvererbung in C# - wieder

Ich weiß, dass es in C# keine Mehrfachvererbung gibt. Und ich weiß, es gibt Umgehungen wie éste zum Beispiel.

Aber hier ist ein Problem, dass ich heute konfrontiert, kann nicht herausfinden, jede ELEGANT Abhilfe. Ich werde ein abstraktes Code-Beispiel hinzufügen, damit Sie es schneller verstehen...

(es sollte ein echter ASP.NET-Code sein - denn diese "Klasse A, Klasse B"-Codebeispiele sind wirklich verwirrend):

public class AdminPage : System.Web.UI.Page
{
    protected override void OnInit(EventArgs e)
    {
        //if not an admin - get out
        if(!CurrentUserIsAdmin()) Response.End();

        base.OnInit (e);
    }
}

public class JQueryPage : System.Web.UI.Page
{
    protected override void OnInit(EventArgs e)
    {
        RegisterJQueryScript();
        base.OnLoad (e);
    }
}

//now here's what I REALLY miss in C#
public class AdminJQueryPage : AdminPage, JQueryPage;

0voto

Jan Remunda Punkte 7680

Sie können dies mit Interfaces tun

    public interface IJQueryPage
    {
    }

    public abstract class AdminPage : System.Web.UI.Page
    {
        protected override void OnInit(EventArgs e)
        {
            //if not an admin - get out
            if(!CurrentUserIsAdmin()) Response.End();
            base.OnInit (e);
        }
        protected override void OnLoad(EventArgs e)
        {
            if (this is IJQueryPage)
            {
                RegisterJQueryScript();
            }            

            base.OnLoad (e);
        }
    }

    public class AdminJQueryPage : AdminPage, IJQueryPage
    { 
    }

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X