Я читал разницу между singleton и static class, но единственное, что я узнал, это то, что singleton дает вам состояние, может реализовывать интерфейсы и выводить, в то время как у статического класса эти вещи не имеют. Я не (возможно, не буду) нуждаюсь в реализации интерфейсов или из классов, поэтому я считаю, что статический класс - это правильная вещь. Но я хотел бы узнать больше об этом состоянии объекта против статического класса без гражданства. Как бы вы определили состояние объекта? Является ли состояние пригодным для повторного использования для событий на одной странице WPF? Это может быть глупый вопрос, но я никогда не следовал теории, я просто закодировал вещи для работы :) Вот почему я изучаю их сейчас.Метод WPF, повторно используемый на нескольких страницах - должен ли я использовать статический класс или singleton?
Назад к теме. У меня есть 1 метод, который одушевляет ярлык, который используется на различных лейблах на разных страницах WPF:
private void SetUpAnimation()
{
DoubleAnimation doubleAnimation = new DoubleAnimation();
doubleAnimation.From = -LabelNameSong.ActualWidth;
doubleAnimation.To = CanMain.ActualWidth;
doubleAnimation.RepeatBehavior = RepeatBehavior.Forever;
doubleAnimation.Duration = new Duration(TimeSpan.Parse("0:0:10"));
LabelNameSong.BeginAnimation(Canvas.RightProperty, doubleAnimation);
}
Поскольку я не хочу, чтобы скопировать вставить это на каждой странице, я думал создать вспомогательный класс , статический класс или класс утилит (которые, как я понимаю) совпадают с этим методом, который я бы назвал там, где мне нужно (передавая правильную метку как параметр, конечно).
Некоторые советы оценили. Спасибо.
Спасибо, сэр за глубокое объяснение. Теперь я понимаю разницу. Только одно. Вы сказали, что каждый объект взаимодействует с синглтоном, будет рисовать из тех же значений. Итак, как только вы инициализируете singleton, он работает как глобальный класс для приложения? –
Да - всего один экземпляр каждого одноэлементного класса в AppDomain. На практике для всех случаев, когда вы не играете с AppDomains, это означает, что экземпляр singleton уникален в приложении. –
После создания объекта Singleton объект является глобальным для приложения, предполагая, что у вас есть ссылка на объект, который хранится или передается. Одиночные объекты обманчиво трудны для эффективного управления без какой-либо структуры зависимостей Injection (популярные контейнеры DI для .Net включают ninject, StructureMap, CastleWindsor) – Claies