2016-03-20 17 views
1

Wie kann ich auf die Funktion in der Datei second.cs zugreifen?C# einschließlich anderer Datei

Zum Beispiel zum Aufruf von someFunction von der zweiten Datei in first_main.

Ich versuchte dies:

first_main.cs:

using second; 
namespace first_main 
{ 
    public partial class MainWindow : MetroWindow, funkcijos 
    { 
     public MainWindow() 
     { 
      someFuction(); 
     } 
    } 
} 

second.cs:

namespace second 
{ 
    public class funkcijos 
    { 
     public funkcijos() 
     { 

     } 
     public void someFuction() 
     { 
      MessageBox.Show("I use function in MainWindow class, from function class"); 
     } 
    } 
} 
+0

Funktion innerhalb Konstruktor? – JerryGoyal

+0

Sie müssen irgendwie einen Verweis auf 'class MainWindow' an' class funkcijos' übergeben. Sie könnten es zum Beispiel als Parameter an 'someFunction()' übergeben. Oder übergeben Sie es dem Konstruktor 'class funkcijos' und speichern Sie es in einem Klassenfeld. –

+0

nicht gültig C# class –

Antwort

1

MetroWindow muss eine Schnittstelle sein, sonst hat man ca n nicht erben für beide MetroWindow, funkcijos. Multi-Vererbung wird nicht von .net unterstützt

using second; 
namespace first_main 
{ 
    public partial class MainWindow : MetroWindow 
    { 
     public MainWindow() 
     { 
     var second = new funkcijos(); 
     funkcijos.someFuction(); 
     } 
    } 
} 

namespace second 
{ 
    public class funkcijos 
    { 
     public funkcijos() 
     { 
     } 

     public void someFuction() 
     { 
      MessageBox.Show("I use function in MainWindow class, from function class"); 
     } 
    } 
} 
+0

funktioniert für meine :)! – armandasalmd

-1

In Ihrer ursprünglichen Frage, es scheint, dass Sie versuchen, eine Teil-Klasse über zwei verschiedene Namensräume zu implementieren, oder Mehrfachvererbung zu erreichen, von denen keine nicht möglich in C# ist.

Was könnten Sie die gleiche Funktionalität zu erreichen tun, ist eine Erweiterungsmethode die someFuction [sic] zum MainWindow Klasse zuordnet erstellen:

first_main.cs:

using second; 

namespace first_main 
{ 
    public partial class MainWindow : MetroWindow 
    { 
     MainWindow() 
     { 
      this.someFuction(); 
     } 
    } 
} 

zweite .cs: ​​

using first_main; 

namespace second 
{ 
    public static class MainWindowExtensions 
    { 
     public static void someFuction(this MainWindow instance) 
     { 
      ... 
     } 
    } 
} 

Zusätzlich diesen Ansatz verwendet, Instanzen von MainWindow erscheinen die Methoden in der Extension-Methode Klasse gespeichert zu gewinnen, als ob sie öffentliche Instanz Mitglieder waren:

var mainWindow = new MainWindow(); 
mainWindow.someFuction(); 

die Schnittstelle Ansatz, erreichen Sie keine Wiederverwendbarkeit von Code. Alles, was Sie haben, ist der Vertrag, aber Sie sind immer noch verpflichtet, diese Methoden überall dort, wo die Schnittstelle verwendet wird, zu implementieren. Der Vorteil zur Lösung Ihres Problems mit dieser Erweiterungsmethode ist, dass Sie erreichen "schreiben Sie einmal, verwenden Sie überall".

Verwandte Themen