Я согласен с cHao.
Классический способ сделать это - включить
public class BookstoreSingleton {
private static readonly BookstoreSingleton instance = new BookstoreSingleton()
public BookstoreSingleton Instance { return instance; }
public Book Book { get { return this.book; } }
}
как член класса BookstoreSingleton. Не ленивый, как было бы, если бы Instance был единственным статическим членом, он отлично справился бы с работой и был совершенно безопасен для потоков, как указано в спецификациях c # (статический инициализатор выполняется только один раз) Только для чтения убедитесь, что это единственный раз, когда будет установлен элемент экземпляра.
Это для одиночной части, но теперь, где вы устанавливаете члена BookstoreSingleton's Book. Возможно, вам нужна безопасность потоков, за исключением случаев, когда вы помещаете его в закрытый конструктор BookstoreSingleton, который статический инициализатор вызывает только один раз.