コンストラクタ内の別のオブジェクトへの参照を受け入れる静的クラスまたはシングルトンクラスを作成します。静的クラスは外ですが、コンストラクタでパラメータを受け入れるシングルトンを作成できるとわかりました。これまでのところ、私は文法を見つけ出すことやグーグルグーグルをすることは一切ありませんでした。これは可能ですか?もしそうなら、どうすればいいのですか?C#パラメータを受け入れるコンストラクタを持つシングルトン
最初の投稿で申し訳ありませんが、私は急いで書きました。私は私の答えがすでに回答に入っていると感じていますが、ここで私が何をしたいか明確にしています:
特定のタイプの単一インスタンス(シングルトン)を作成したいのですが、型は別のオブジェクトへの参照を保持する必要があります。
例えば、私は、StringBuilderオブジェクトを所有するSingleton "Status"クラスと、前記StringBuilderをスクリーンに書き込むために呼び出すことができるDraw()メソッドを作成したいと思うかもしれません。 Draw()メソッドは、描画するために私のGraphcisDeviceについて知る必要があります。 は、だから私はそれをこの何をしたいか:すべてのコードの上に
public class Status
{
private static Status _instance;
private StringBuilder _messages;
private GraphicsDevice _gDevice;
private Status(string message, GraphicsDevice device)
{
_messages.Append(message);
_gDevice = device;
}
// The following isn't thread-safe
// This constructor part is what I'm trying to figure out
public static Status Instance // (GraphicsDevice device)
{
get
{
if (_instance == null)
{
_instance = new Status("Test Message!", device);
}
return _instance;
}
}
public void UpdateMessage
...
public void Draw()
{
// Draw my status to the screen, using _gDevice and _messages
}
}
を、私は自分のステータスシングルトンを取得し、そのUpdateMessage()メソッドを呼び出します。
private Status _status = Status.Instance; // + pass reference to GraphicsDevice
_status.UpdateMessage("Foo!");
その後、私はまた、シングルトンを取得し、それを描く私のメインクラスで:
_status.Draw();
はい、これは私はシングルトンを取得どこでも、私は渡すことでそうする必要があることを意味私が初めてシングルトンをインスタンス化する場合に備えて、GraphicsDeviceへの参照。そして私は、例えば、サービスを他の場所に登録し、そのサービスをStatusクラスで取得するなど、シングルトンクラスのGraphicsDeviceと同じように基本的なものを取得するために、さまざまな手段を使用できます。この例はかなり工夫されています - 私はこのパターンのような何かが最初に可能であるかどうかを判断しようとしています。
私が尋ねてきたことについて、はるかに優れた説明が追加されました。 –