2016-09-11 7 views
-2

私はという名前のクラスを持っているとしましょう。です。私は、このクラスのインスタンスを一度に1つしか含まないようにしたい。一度に1つのクラスのインスタンス

私はこのようにそれを使用して、シングルトン遺伝クラス名を持っている:

public class TestClass : Singleton<TestClass> 
{ 

} 

そして私は事は、私は、時々、である。この

TestClass.Instance // Gives me one instance 

のようにそれを使用します新しいパラメータなどを使ってTestClassを頻繁に再インスタンス化する必要があります。

スタティックインスタンスを作成し、必要なときに再インスタンス化してください。そこにはこれを行うためのより良い方法がありますか?

ありがとうございます。

+0

値、ユーザー入力、またはアプリケーションが静的データをリロードするか、または... –

+3

'Singleton 'からどのように継承していますか? 'Instance'プロパティは静的であり、継承することはできません。 –

+0

シングルトンから継承するは、一度に1つしかインスタンスを持たないクラスになります。私はそれぞれの使用のために再instatiateする必要があることを除いて。 @Brian Mains値を変更するのは私です。 – Haytam

答えて

0

シングルトンは、アプリケーションが終了するまで存在するためのものであり、再インストラクションしないでください。このクラスのメンバーを変更する場合は、setterメソッドを作成します。例えば

、あなたがそれにシングルトンクラスと二つの部材を持っている場合:

public int Integer1 { get; private set;} 
public string String1 { get; private set;} 

あなたがそれらを設定します一つの方法を作成し、これらの二つの特性が一緒に変更する必要がある場合は、2つのセッターを作成したりすることができますいずれか指定された値:

public void SetIntAndString(int int1, string str1) 
{ 
    Integer1 = int1; 
    String1 = str1; 
} 

クラスインスタンスオブジェクト自体を削除または変更する方法は絶対にありません。

+0

良いアイデアのように思えますが、新しい値でそのクラスのアクションを再起動するメソッドを実行するだけですね。 – Haytam

+0

はい、これはシングルトンを元に戻すよりもはるかに良いアイデアです –

関連する問題