2016-04-18 4 views
-1

Ich versuche gerade, eine Instanz der Iinforcard-Schnittstelle innerhalb meiner "createNewInfocard" -Funktion zurückzugeben, aber ich laufe weiter in Fehler CS0266. Ich bin unsicher, wie das behoben werden kann.Wie gebe ich diese Instanz der IInfocard-Schnittstelle zurück?

public interface IInfoCard 
    { 
     string Name { get; set; } 
     string Category { get; } 
     string GetDataAsString(); 
     void DisplayData(Panel displayPanel); 
     void CloseDisplay(); 
     bool EditData(); 
    } 




public interface IInfoCardFactory 
{ 
    IInfoCard CreateNewInfoCard(string category); 
    IInfoCard CreateInfoCard(string initialDetails); 
    string[] CategoriesSupported { get; } 
    string GetDescription(string category); 
} 

public class Class1 : IInfoCardFactory 
    { 

    public IInfoCard CreateNewInfoCard(string category) 
    { 

     Class1 x; 
     x = new Class1(); 
     return x;// i keep at getting error CS0266 at this return statement. 
    } 


} 
+1

Klasse1 implementiert keine IInfoCard! Der Fehler, den Sie bekommen, sollte für Sie sinnvoll sein. – adt

Antwort

0

Class1mussIInfoCard Schnittstelle implementieren, dh

public class Class1 : 
    IInfoCardFactory, 
    IInfoCard // <- notice IInfoCard implementation 
    { 
    public IInfoCard CreateNewInfoCard(string category) 
    { 
     Class1 x; 
     x = new Class1(); 
     return x;// i keep at getting error CS0266 at this return statement. 
    } 
    ... 
    //TODO: put here IInfoCard methods and properties implementations 
    } 

jetzt, in Ihrem aktuellen Code, Class1 implementiert IInfoCardFactory aber nicht IInfoCard

0

Haben Sie eine Klasse, die Ihre implementiert IInfoCard Schnittstelle ?

Eine Schnittstelle auf seinem eigenen wird nur einige Funktionen zu definieren, die eine Klasse haben sollte, so dass Sie eine konkrete Umsetzung zu verwenden, um es brauchen:

// Notice the IInfoCard declaration, indicating Class1 implements it 
public class Class1 : IInfoCardFactory, IInfocard 
{ 
    /* Omitted for brevity */ 
} 

Dies sollten Sie ermöglichen, Ihr Class1 Objekt zurückgeben von Ihrer CreateNewInfoCard() Methode, wie es jetzt als IInfoCard Objekt qualifiziert, da es es implementiert.

Verwandte Themen