Мое приложение имеет класс CurrentContext, он обеспечивает доступ к свойствам, используемым во всем приложении (поэтому нет необходимости передавать объекты через параметры или методы конструктора).
Большинство этих свойств не меняют своего значения в течение одного сеанса.
Поскольку некоторые классы используют некоторые свойства довольно часто, я решил создать свойства внутри них, теперь я выполняю рефакторинг своегокод, поэтому схема доступа везде одинакова.
Какой из приведенных ниже шаблонов является лучшей практикой?
В чем разница в использовании памяти или производительности?
Класс CurrentContext:
public class CurrentContext
{
public Document Doc {get; set}
public LogFile LogFile {get; set;}
public bool AbortFlag {get; set;}
}
Класс, обращающийся к свойствам класса CurrentContext:
Вариант 1:
public class Example
{
private Document Doc {get { return MyApp.CurrentContext.Doc; } }
private LogFile LogFile {get { return MyApp.CurrentContext.LogFile; } }
private bool AbortFlag {get { return MyApp.CurrentContext.AbortFlag; } }
}
Вариант 2:
public class Example
{
private Document Doc {get; }
private LogFile LogFile {get; }
private bool AbortFlag {get; }
public Example()
{
Doc = MyApp.CurrentContext.Doc;
LogFile = MyApp.CurrentContext.LogFile;
AbortFlag = MyApp.CurrentContext.AbortFlag;
}
}