2016-06-29 8 views
0

Hi Ich frage mich, ob es eine schöne Möglichkeit ohne Overkill gibt, eine Interface-Methode zu haben, die zB 3 verschiedene Modelle aufnehmen könnte? Ich suche nach etwas, wie:Ist es möglich, eine Interface-Methode zu akzeptieren, die verschiedene Klassen C# akzeptiert?

public interface IOperations 
    { 
     void AddTranslation(TranslationLocationEnum Location, T model)    
    } 

public class ApplicationOne : IOperations 
    { 
     public void AddTranslation(TranslationLocationEnum Location, ClassType1 model)  
    } 

public class ApplicationTwo : IOperations 
    { 
     public void AddTranslation(TranslationLocationEnum Location, ClassType2 model)  
    } 

Danke

+1

Sie können es generisch machen ('IOperations '), aber dann können Sie Problem haben, es zu benutzen (anrufend). Wie soll diese Schnittstelle verwendet werden? –

Antwort

3
public interface IOperations<T> where T : class 
{ 
    void AddTranslation(TranslationLocationEnum Location, T model); 
} 

public class ApplicationOne : IOperations<ApplicationOne> 
{ 
    public void AddTranslation(TranslationLocationEnum Location, ApplicationOne model) 
    { 
     throw new NotImplementedException(); 
    } 
} 

public class ApplicationTwo : IOperations<ApplicationTwo> 
{ 
    public void AddTranslation(TranslationLocationEnum Location, ApplicationTwo model) 
    { 
     throw new NotImplementedException(); 
    } 
} 

Verwendung generische Schnittstelle und übergeben Typ zum Zeitpunkt der Schnittstelle vererben. Hoffe das hilft.

+1

Das wäre: 'public class ApplicationOne: IOperations '. –

+0

@JeppeStigNielsen Ja, Sie können jede Klasse bestehen. Ich habe nur ein Beispiel gegeben. –

+0

Okay, würde es so funktionieren, aber was, wenn ich mehrere Arten von Modellen zB passieren muß: Ich habe eine AddTranslationApplication1, AddTranslationApplication2 Klasse und hat auch eine EditTranslationApp1, EditTranslationApp2 Klasse. Wenn ich mit dieser Lösung gehe, bedeutet das, dass ich eine Schnittstelle für jede Operation in meinem Verständnis erstellen muss. Ich möchte nur mit einer Schnittstelle haben Add/edit/Operationen jeder Annahme 3x3 verschiedene jeweiligen Kategorie zu lesen (und ich möchte nicht, dies zu tun: where T: Klasse, wobei Z: Klasse etc –

Verwandte Themen