생성자에서 다른 객체에 대한 참조를 받아들이는 정적 클래스 또는 싱글 톤 클래스를 만들고 싶습니다. 정적 클래스가 있지만, 나는 생성자에서 매개 변수를 받아들이는 싱글 톤을 만들 수 있다고 생각했다. 지금까지 구문을 알아 내거나 인터넷 검색을하는 행운이 없었습니다. 이것이 가능한가? 그렇다면 어떻게해야합니까?C# 매개 변수를 받아들이는 생성자가있는 싱글 톤
초기 게시물에 예제가 없으므로 죄송합니다. 서둘러 썼습니다. 내 대답은 이미 답장을 받았지만 여기에 내가하고 싶은 일에 대한 설명이 있습니다.
특정 유형의 단일 인스턴스 (Singleton)를 만들고 싶지만 type은 다른 객체에 대한 참조를 보유해야합니다.
예를 들어, 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();
네, 제가 싱글을 검색 할 때마다, 나는 전달하여 그렇게해야한다는 것을 의미 첫 번째로 Singleton을 인스턴스화하는 경우를 대비해서 GraphicsDevice에 대한 참조. 그리고 다른 방법을 사용하여 내 Singleton 클래스의 GraphicsDevice처럼 근본적인 것을 검색 할 수 있습니다. 예를 들어 다른 곳에 서비스를 등록하고 Status 클래스에서 해당 서비스를 가져올 수 있습니다. 이 예제는 꽤 고안된 것입니다 - 나는이 패턴과 같은 무언가가 일지 알아 내기 위해 노력하고 있습니다.
내가 묻는 내용에 대한 설명이 추가되었습니다. –