Это мой синглетный класс Person.Перерыв Синглтон с использованием сериализации C#
public class Person
{
private static Person _person = null;
private Person()
{ }
public string Name { get; }
public static Person PersonObj
{
get
{
if (_person == null)
_person = new Person();
return _person;
}
}
}
Теперь я могу создать два экземпляра этого класса путем сериализации.
static void Main(string[] args)
{
Person p = Person.PersonObj;
string sss = Newtonsoft.Json.JsonConvert.SerializeObject(p);
Person p1 = JsonConvert.DeserializeObject<Person>(sss);
if (p != p1)
{
// insert here
}
}
Теперь после сериализации у меня есть два разных объекта. Как класс singleton, как он может иметь два разных объекта?
Я думаю, что вы не поняли вопрос. Это то, что я спрашиваю, является ли класс singleton тем, как он может иметь 2 объекта? –
Я вижу. Поскольку у вас есть частный ctor. Я уверен, что Jason.net может создавать объекты даже без ctor. Большая часть сериализации имеет эту возможность. Json.Net не использует ваше свойство PersonObj. –