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; }
}
}