Frage

Ich habe zwei Klassen, die einige gemeinsame Methoden wie funcA (), funcB ()

und sind einige Methoden nur zu seiner Klasse im Zusammenhang ...

, was ich tat Schnittstelle von TestInterface gemacht wird

public interface TestInterface
{
   void funcA()
   void funcB()
}


public class ClassA : TestInterface
{
  public  void funcA()
   {
     Console.WriteLine("This is ClassA FuncA()");
   }
  public  void funcB()
   {
     Console.WriteLine("This is ClassA FuncB()");
   }
  public void myFuncA()
   {
      Console.WriteLine("This is My Own Function A");
    }

}

public class ClassB : TestInterface
    {
      public  void funcA()
       {
         Console.WriteLine("This is ClassB FuncA()");
       }
      public  void funcB()
       {
         Console.WriteLine("This is ClassB FuncB()");
       }
      public void myFuncB()
       {
          Console.WriteLine("This is My Own Function B");
       }

    }



public static void main()
{
 TestInterface test = new ClassA();
 test.funcA();
}

als u über zwei Klassen sehen in. i haben zwei Funktionen myFuncA () und myFuncB () sind nicht Teil der Schnittstelle. sie gehört nur zu ihrer eigenen Klasse.

Wie kann ich sie aus dem Haupt-Methode aufrufen. wo ich Gegenstand von TestInterface bin die Schaffung und es mit einigen untergeordneten Klasse zu initialisieren. ???


eigentlich ich habe separate Klassen in DAL.

Sie haben einige gemeinsame Methoden. und einige Methoden im Zusammenhang mit ihrer eigenen Klasse.

ich will Fabrik-Muster auf, dies umzusetzen.

Was soll ich jetzt tun?

War es hilfreich?

Lösung 7

is it good to add methods of ClassA and ClassB into interface and provide null implementation in other class?
like 

public interface TestInterface
{
void funcA();
void funcB();
void myFuncA();
void myFuncB();
}


public class ClassA:TestInterface
{
public void funcA()
{
 // some code here
}

public void funcB()
{
 // some code here
}
public void myFuncA()
{
 // my own code here
}
public void funcB()
{
 // null implementation
}
}

und umgekehrt von diesem in ClassB

Andere Tipps

Wenn Sie sich fragen, ob man so etwas tun können:

public static void Main(string[] a)
{
 TestInterface test = new ClassA();
 test.myFuncA();
}

Die Antwort ist nein. Sie müssten es KlasseA werfen erste. Die Tatsache, dass Sie denken, Sie dies tun müssen, gibt es wahrscheinlich etwas falsch mit Ihrem Design ist.

TestInterface test = new ClassA();
 test.myFuncA();
(test as ClassB).myFuncB();

Hoffentlich war es das, was Sie suchen.

Machen Sie

eine neue Schnittstelle für KlasseA und ClassB und Sie müssen nur die Klasse auf die richtige Schnittstelle werfen, die neuen Funktionen zu sehen.

public class ClassA : TestInterface, TestInterfaceA {
}

Wenn Sie also die konkrete Instanz bekommen warf nur, dass zu TestInterfaceA die spezifischen Funktionen dieser Klasse zu sehen.

Sie können die TestInterface Objekt geworfen, aber es Niederlagen der Zweck des Polymorphismus ...

public static void main()
{
 TestInterface test = new ClassA();
 test.funcA();
((ClassA) test).myFuncA();
}

Versuchen Gießen. Ich gehe davon aus der Frage, die Sie so etwas wie dies gemeint:

public void simpleMethod(TestInterface variableName) {
   if (variableName is ClassA) {
       ((ClassA)variableName).myFuncA();
    }
}

Mohsen Ich bin wirklich mit Ihrer Frage verwirrt

, wenn Sie nur wollen MyFuncA () aufrufen oder MyFuncB () nur sollten Sie eine Instanz ihrer eigenen calss wie

erstellen
ClassA a = new ClassA();
a.FuncA(); //interface member
a.FuncB(); // interface member
a.MyFuncA(); //class A Member

Ich kann nicht undrestand warum Sie versuchen, eine Instanz der Schnittstelle zu erstellen und dann Unterklasse Methoden aufrufen !!!! Habe ich recht ? oder Imisunderstood Ihr Problem?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top