У меня есть синглтон, который использует «статический readonly T Instance = new T();» шаблон. Однако я столкнулся с ситуацией, когда T является одноразовым, и на самом деле его нужно утилизировать для модульных тестов. Как изменить этот шаблон для поддержки одноразового одноразового использования?Одноразовый синглтон в C#
Интерфейс Я хотел бы что-то вроде:
var x = Foo.Instance;
var y = Foo.Instance; // x == y
...
x.Release(); // this causes the next Foo.Instance to return a fresh object
// also, it assumes no further operations on x/y will be performed.
Примечание - шаблон должен быть поточно-, конечно.
Редактировать - для целей производственного кода это настоящий синглтон. Дело в том, что он блокирует некоторые файлы, и поэтому для очистки в модульных тестах мы должны утилизировать его.
Я также предпочел бы образец, который можно использовать повторно, если это возможно.
Если вы можете сделать новый T(), что означает, что вы должен иметь общее ограничение T, имеющее открытый конструктор без параметров, и в этом случае это не одноэлементное начало. – 2008-10-22 13:30:11
Я просто написал это как образец, на самом деле он не является общим. У меня есть класс, который вызывает его частный конструктор и назначает его публичному статическому полю readonly. – ripper234 2008-10-22 13:32:15