2012-03-13 9 views
0

私はこのように定義されたパブリックメソッドを持つクラスがあります:アクセス同じクラス

public class Core1 { 
//... 
//... 
    public void DoSmth() 
    { 
    //.... 
    } 

    //..... 
    //.... 
} 

public partial class Form1 : Form 
    { 
    //..... 

をそして私はForm1の中で、クラスを初期化したい、としましょう:

Core1 newcore = new Core1(); 

そしてアクセスいくつかの他の形式で、newcore(DmSmth()のための公式メソッド)のいくつかは、Form3またはForm4を言うことができます。これを行う最善の方法は何ですか?

ありがとうございました。

答えて

2

は、あなたがオブジェクト全体またはその一部のプロパティ/メソッドへのアクセスを提供するために、Form1にパブリックプロパティを提供することができSingleton Pattern

0

でこれを行うことができます。

private Core1 newcore = new Core1(); 

public Core1 Core 
{ 
    get { return newcore; } 
    set { newcore = value; } 
} 

public void DoSmthWithCore() 
{ 
    newcore.DoSmth(); 
} 

別のフォームにアクセスする必要がある場合は、Form1への参照が必要です。たとえば、インスタンスをコンストラクタForm2またはその任意のメソッドに渡すか、Application.OpenFormsを使用します。

一般に、外部クラスへの最小限のアクセスを提供する方が効果的です。新しいコアの静的パブリック変数を作成します

var result = Form1.Core1.DmSmth(); 
2

基本的に公共の静的インスタンスを使用します例:

public partial class Form1 : Form 
{ 
    public static Core1 newcore = new Core1(); 
} 

および形式2:

public partial class Form2 : Form 
{ 
    public void Test() 
    { 
    Namespace.Form1.newcore.DoSmth(); 
    } 
} 

それとも、静的クラスにCore1を行うことができます。それはdoesnのためだけで、これまでのいずれか、コア1の単一のインスタンスが存在することは理にかなっている場合はそれが

0

:任意の形式で

public static readonly Core1 Newcore = new Core1(); 

と、このようなアクセスを(これはthread safeではないことに注意してください):

1

を助けている場合

public static class Core1 
{ 
    public static void DoSmth() 
    { 
    } 
} 

どのような状態もありません(パラメータだけで動作するメソッドだけです。これはユーティリティクラスと呼ばれます)、それは静的であり、そのメソッドと一緒に存在することは決してありません。クラスの複数のインスタンスのいずれかになる可能性がある場合は、静的な場所を使用しないでください。フォームのいずれかに作成し(意味がある場合はどこでも)、その値を他のフォームに渡す必要があります。これは、公共財産を通じて、コンストラクターを通じてなどのいずれかである可能性があります。

0

あなたがこのオブジェクトにCore1のインスタンスを1つだけ共有している場合は、あなたが他の形態では、この

// in Form1 
static Core1 newcore = new Core1(); 

public static Core1 CoreObject 
{ 
    get { return newcore; } 
} 

を行うことができますが、私は、オブジェクトを取得するには、次の

Core1 object = Form1.CoreObject; 
// or... 
Form1.CoreObject.SomeMethod(); 

のようなものを行うことができますあなたは公共のvarを行うことをお勧めしません、プロパティは、より良い制御と柔軟性を与えるだろう

関連する問題