2016-03-20 13 views
1

second.csファイルの機能にアクセスするにはどうすればよいですか?C#他のファイルを含む

たとえば、first_mainの2番目のファイルからsomeFunctionを呼び出す場合。

私はこれを試してみました:

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

コンストラクタ内部で機能しますか? – JerryGoyal

+0

'class MainWindow'への参照を' class funkcijos'に何らかの形で渡す必要があります。 'someFunction()'にパラメータとして渡すことができます。あるいは 'class funkcijos'コンストラクタに渡し、クラスフィールドにそれを保存します。 –

+0

無効なC#クラス –

答えて

1

をMetroWindowは、そうでなければ、インターフェイスである必要がありますca nはMetroWindow、funkcijosの両方を継承しません。マルチ継承があなたの元の質問では、.NET

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

は私のために働く:)! – armandasalmd

-1

でサポートされていない、あなたがC#でことはできませんどちらも、多重継承を、二つの異なるネームスペース間で部分クラスを実装するか、達成しようとしている表示されます。

first_main.cs:

using second; 

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

秒あなたは同じ機能を実現するために何ができるか

MainWindowクラスにsomeFuction [原文]を関連付け拡張メソッドを作成することです.cs:

using first_main; 

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

また、このアプローチを利用し、MainWindowのインスタンスは、パブリックインスタンスメンバーであるかのように拡張メソッドクラスに保存されているメソッドを得るために表示されます。

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

インタフェース・アプローチを使用して、のない再利用性を達成していませんコード。あなたが持っているのは契約ですが、インターフェイスが使用されるすべての場所でこれらのメソッドを実装する必要があります。この拡張メソッドのアプローチの問題を解決する利点は、 "一度だけ書き込み、どこでも使用します"を達成することです。 "

関連する問題