using Developpez.Dotnet.Windows.Service; namespace Developpez.Dotnet.Windows.ViewModel { /// /// Classe de base pour toutes les classes ViewModel (Vue-Modèle) dans le cadre du pattern MVVM /// Fournit le support pour la notification de changement des propriétés (hérité de ObservableBase) /// et propose une propriété DisplayName. Cette classe est abstraite. /// public abstract class ViewModelBase : ObservableBase { #region Propriétés publiques /// /// Renvoie le nom convivial de cet objet. /// Les classes dérivées peuvent affecter une nouvelle valeur à cette propriété, /// ou modifier son implémentation pour déterminer la valeur à la demande /// public virtual string DisplayName { get; protected set; } #endregion // Propriétés publiques #region GetService /// /// Renvoie le service du type spécifié avec le nom spécifié /// /// Type du service /// Nom du service /// Le service demandé s'il existe. Sinon, une ServiceNotFoundException est levée. /// L'implémentation par défaut utilise la classe ServiceLocator pour obtenir le service demandé. /// Vous pouvez substituer cette méthode pour utiliser un conteneur IoC de votre choix. public virtual TService GetService(string name) { return ServiceLocator.Instance.GetService(name); } /// /// Renvoie le service sans nom du type spécifié /// /// Type du service /// Le service demandé s'il existe. Sinon, une ServiceNotFoundException est levée. public TService GetService() { return GetService(null); } #endregion } /// /// Classe de base pour un ViewModel qui expose le modèle via une propriété fortement typée /// /// Type du modèle public abstract class ViewModelBase : ViewModelBase { /// /// Obtient ou définit le modèle lié à ce ViewModel /// public TModel Model { get; protected set; } } }