Я хочу создать статический класс или одноэлементный класс, который принимает ссылку на другой объект в своем конструкторе. Статические классы отсутствуют, но я подумал, что мог бы создать синглтон, который принимает параметры в своем конструкторе. До сих пор мне не повезло выяснить или погуглить синтаксис. Это возможно? если да, то как мне это сделать?
Извините за отсутствие примера в первоначальном посте, я написал это в спешке. У меня такое ощущение, что мой ответ уже есть в ответах, но вот некоторые разъяснения того, что я хочу сделать:
Я хочу создать один экземпляр определенного типа (например, Singleton), но этот единственный экземпляр типа должен содержать ссылку на другой объект.
Например, мне может понадобиться создать класс Singleton «Status», которому принадлежит объект StringBuilder и метод Draw (), который можно вызвать для записи указанного StringBuilder на экран. Метод 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, на случай, если я впервые создаю экземпляр Singleton. И я мог / мог бы использовать другие средства для извлечения чего-то столь же фундаментального, как GraphicsDevice в моем классе Singleton, например, зарегистрировать службу в другом месте и получить эту службу в классе Status. Этот пример получился довольно надуманным - я пытаюсь выяснить, возможно ли, во-первых, что-то , как этот шаблон.