2016-03-31 4 views
7

Ich bin dabei, eine Neuentwicklung meines ASP.NET C# MVC-kommerziellen Projekts zu starten, das die Nominierung für Pferdeveranstaltungen in Australien übernimmt.Verwendung von C# -Schnittstellen zur Erweiterung bestehender Anwendungen

Ich möchte es auf andere Arten von Veranstaltungen, z. B. Autorennen, Fußball, alles erweitern. Im Moment ist es sehr spezifisch für diesen Sport

Ich habe Forschung in Interfaces und andere OOP Ansätze, aber die Anwendung auf die reale Welt ist ein wenig entmutigend.

Das ist mein Grundplan:

public interface INomination 
{ 
    public void AddNomination(); 
    public void UpdateNomination(); 
    public void DeleteNomination(); 
} 

public BaseNomination 
{ 
    // Define properties 
} 

public HorseNomination : BaseNomination, INomination 
{ 
    // Horse nomination specific stuff, like specifying the horse 
    public bigint HorseID { get; set; } 
} 

Dann wird in der einen NominationService, konnte ich dieses

public void HandleNomination(INomination nomination) 
{ 
    nomination.Add(); 
} 

nennen Wo ist mein Kopf weh zu tun beginnt, wie zwischen einer Nominierung zu unterscheiden, die erfordert der Benutzer das Pferd für die HorseNomination angeben oder nicht, wie CarNomination?

Benötige ich IHorseNomination, ICarNomination? Wenn ja, wie gehe ich zum Beispiel damit um, um den Typ von View für Benutzereingaben zu rendern?

+1

Ihre 'BaseNomination' Klasse sollte bereits eine' NominationID' enthalten. Sie sollte für alle Nominierungsarten verwendbar sein. –

Antwort

1

Als das, was ich von Frage verstehen müssen, ist Sie stecken geblieben sind, wie Sie differenct nennen Nominierungen dh HorseNomination, CarNomination usw.

public void HandleNomination(INomination nomination) 
{ 
    nomination.Add(); 
} 

Was haben Sie in diesem Parameter zu übergeben ist das Objekt der Klasse, für die Sie möchten eine Aktion ausführen.

Aber denken Sie daran, um Objekte übergeben zu müssen, müssen Sie die Schnittstelle für diese Klasse erben.

Ich hoffe, ich habe Ihre Frage verstanden und versuchte ein wenig, das zu beantworten.

+0

Danke Salman, das ist großartig und kann verstehen, was du meinst. – clayiam

+0

Vergnügen Kerl markieren Sie dies als nützlich :) –

Verwandte Themen