2009-06-11 6 views
4

je me surprends à écrire ce code beaucoup:Est-il possilbe d'utiliser des attributs pour augmenter automatiquement un événement sur un changement de propriété

private int _operationalPlan; 
    public int OperationalPlan 
    { 
     get 
     { 
      return _operationalPlan; 
     } 
     set 
     { 
      _operationalPlan = value; 
      RaisePropertyChanged(); 
     } 
    } 

    private void RaisePropertyChanged() 
    { 
     if (PropertyChanged != null) 
     { 
      PropertyChanged(this, new 
             PropertyChangedEventArgs("PlansSelected")); 
     } 
    } 

Je me demande s'il pourrait être possible d'écrire un attribut qui pourrait être ajouté à la propriété pour déclencher automatiquement l'événement. C'est à dire. quelque chose comme ceci:

[RaiseOnSet("ProperyChanged", "PropertyChangedEventArgs", "PlansSelected")] 
public int OperationalPlan 
{ 
    get 
    { 
     return _operationalPlan; 
    } 
    set 
    { 
     _operationalPlan = value; 
     RaisePropertyChanged(); 
    } 
} 

Avant que je vais essayer de mettre en œuvre ce que je me demandais:

  • Est-ce service dans le cadre de .net
  • Quelqu'un at-il essayé de cet établissement
  • Si il est possible
  • S'il y a des impasses que je devrais éviter

Répondre

5

Pour ce faire, vous auriez besoin d'un cadre d'AOP pour .NET, comme PostSharp ou AOP.NET

0

Je vous êtes prêt à utiliser une classe d'aide pour envelopper les valeurs de propriétés que vous pouvez le faire. Mais cela signifie que tout client accédant à la propriété devra déballer la valeur.

Une autre route consiste à utiliser un type d'assistance, voir WPF et WF utilisant DependencyProperty (différent) pour cela. Mais vous n'obtenez pas automatiquement les propriétés implémentées.

Questions connexes