C# Singleton avec un constructeur qui accepte des paramètres

Je veux créer une classe statique ou de la classe singleton qui accepte une référence à un autre objet dans son constructeur. Les classes statiques sont sortis, mais j'ai pensé que je pourrais créer un singleton qui accepte des paramètres dans son constructeur. Jusqu'à présent, je n'ai pas eu de chance de trouver ou de googler la syntaxe. Est-ce possible? si oui, comment dois-je faire?

Désolé pour aucun exemple dans le post initial, je l'ai écrit dans un rush. J'ai le sentiment que ma réponse est déjà dans les réponses, mais voici quelques précisions de ce que je veux faire:

Je veux créer une seule instance d'un type spécifique (dit Singleton), mais que seule instance du type doit contenir une référence à un autre objet.

Par exemple, je pourrais avoir besoin de créer un Singleton "Statut" de la classe, qui possède un objet StringBuilder et une méthode Draw() qui peut être appelée à l'écriture dit StringBuilder à l'écran. La méthode Draw() a besoin de savoir à propos de mon GraphcisDevice afin d'en tirer.
Donc ce que je veux faire ceci:

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
    }
}  

Partout dans le code, j'ai récupérer mon Statut de Singleton et appeler sa UpdateMessage() la méthode.

private Status _status = Status.Instance; //+ pass reference to GraphicsDevice
_status.UpdateMessage("Foo!");

Puis, dans ma classe principale j'ai aussi récupérer le singleton, et de le faire:

_status.Draw();

Oui, cela signifie que partout où j'récupérer le singleton, j'ai besoin de le faire en passant par la référence à la GraphicsDevice, dans le cas où c'est la première fois que j'instancie le Singleton. Et je pourrais/voudrais utiliser différents moyens pour récupérer quelque chose d'aussi fondamental que la GraphicsDevice dans ma classe Singleton, par exemple s'inscrire à un service des autres et de s'service dans le Statut de la classe. Cet exemple a eu assez artificiel - je suis en train de voir si quelque chose comme ce modèle est possible en premier lieu.

  • Ajout d'une bien meilleure explication de ce que je lui demande.
InformationsquelleAutor | 2009-07-14