Хранилище не должно возвращать одноэлементный объект, а хранилище используется для доступа к данным, а не для возврата одноэлементных объектов.Ваш репозиторий сам по себе может быть одноэлементным, но я не рекомендую его, и я не рекомендую использовать одноэлементный класс для класса, использующего репозиторий.В коде, который у вас есть, создается впечатление, что хранилище должно знать о «бизнес-уровне», который все испортил, отношения должны идти только одним путем.Я бы переписал это как:
public class MySingleTon
{
private MySingleTon()
{
// You constructor logic, maybe create a reference
// to your repository if you need it
}
private static MySingleTon _instance;
public static MySingleTon Instance {
get
{
if(_instance == null)
_instance = new MySingleTon();
return _instance;
}
}
public string prop1 { get; set; }
public string prop2 { get; set; }
}
Я не рекомендую свое решение, но оно должно решить вашу проблему.То, что я действительно рекомендую, это изучение внедрения зависимостей и инверсии управления, поскольку ваш дизайн кажется неправильным.Взгляните на NInject .
РЕДАКТИРОВАТЬ: Еще одна вещь, почему ваш синглтон имеет несколько общедоступных свойств?Синглтон не должен предоставлять свойства, он должен только представлять функции, и его следует использовать в основном, когда у вас есть служебный класс, такой как Math
, или настоящий синглтон, такой как регистратор.