Obtics ou comment gérer de facon dynamique ses objets métiers….

N’importe quel développeur SL/WPF à l’habitude de gérer les évènements PropertyChanged, CollectionChanged et ça devient vite très chiant dans certains cas. Je vais vous présenter une libraire appelée Obtics, mais attention je vous avertis, on en tombe vite accroc.

Un cas simple, vous avez une ObservableCollection d’objet métier que vous voulez encapsuler dans un ensemble de ViewModel.

    public class MainViewModel: ViewModelBase
    {
        private readonly ObservableCollection<BusinessObject> _collection;

        public MainViewModel(ObservableCollection<BusinessObject> collection)
        {
            _collection = collection;
        }

        public IEnumerable<BusinessObjectViewModel> Entities { get; set; }
    }

En temps normal, vous vous abonneriez à l’évènement CollectionChanged de l’ObservableCollection et vous gériez la fameuse routine des NotifyCollectionChangedAction.

Mais là, Obtics (comme toujours ?) va vous simplifier la vie, voici comment faire avec Obtics :

        public MainViewModel(ObservableCollection<BusinessObject> collection)
        {
            _collection = collection;
            
            IValueProvider<IEnumerable<BusinessObjectViewModel>> valueProvider = ExpressionObserver.Execute(
            () => _collection.Select(bo => new BusinessObjectViewModel(bo)));

            this.Entities = valueProvider.Cascade();
        }


Obtics va « Compiler » votre LambdaExpression en pipeline de création d’un objet qui va automatiquement s’abonner aux évènements nécessaires pour tenir toujours à jour la valeur fournit par le IValueProvider fournit.

Dans le cas de IValueProvider<IEnumerable<T>>, il est possible de « merger » les évènements de changement de valeur de l’IEnumerable<T> pour obtenir un IEnumerable<T>.

En gros, si la propriété Value de valueProvider change alors la collection obtenue par Cascade(), va faire un NotifyCollectionChangedAction.Add, NotifyCollectionChangedAction.Remove de la différence ou un NotifyCollectionChangedAction.Reset.

 

Pour aller plus loin, imaginons que vous voulez filtrer sur vos objets qui ont la propriété « Name » commençant par « Vin », il suffit de faire :

ExpressionObserver.Execute(() => this._collection.Where(bo => bo.Name.StartsWith("Vin")).Select(bo => new BusinessObjectViewModel(bo))).Cascade();

Sympa non ?

Il y a beaucoup de principes à comprendre dans cette libraire avant de l’exploiter au maximum, j’attends vos retours pour continuer de blogger dessus…

Publié dans .NET, Développement, Silverlight, WPF.

Classé dans , , , .


Comportement étrange dans le toolkit Windows Phone 7

Cela fait un petit moment que je n’ai pas posté, mais je me sentais obligé après avoir découvert un comportement étrange pendant un développement WP7…

Mon ami Applien me parle toujours de la fluidité du scroll des ListBoxs sur iPhone, il faut le reconnaitre c’est fluide !

Je développais une application pour ce fameux Applien et je me suis rendu compte que ma ListBox n’était pas si fluide que ça… J’avais déjà fait mieux sur WP7… Je suis parti à la recherche du pourquoi.

Lire la suite…

Publié dans .NET, Non classé, Silverlight.

Classé dans , .


En bref… Tu es étudiant ? Alors profites-en, certifie-toi !

Si tu es étudiant, tu n’es pas sans savoir que pour un employeur la certification est un gage de qualité.
Microsoft aide les étudiants dans cette démarche.

Les certifications Microsoft sont moins chères pour les étudiants, en effet, si tu es étudiant tu peux profiter de 50% sur les certifications Microsoft !

Et jusqu’au 30 juin 2010, profite d’un second essai gratuitsi tu n’as pas réussi ton premier passage de la certification !

Alors n’attends plus, renseigne toi sur
http://www.microsoft.com/france/etudiants/telecharger/boutique/certifications-etudiants.aspx.

Publié dans En bref....

Classé dans , .


Design Time avec Visual Studio 2010 Beta 2 (Silverlight, WPF)

Ce que je vais vous présenter à travers cet article n’est pas apparu avec la bêta 2 de Visual Studio 2010 mais a été introduit dans Blend 3. Pour les fans du MVVM, vous me comprendrez si je vous dis que ça serait sympa d’avoir un rendu du designer avec un ViewModel non vide ou de pouvoir utiliser le Binding Builder en cas d’injection du DataContext par le code ? Réjouissez-vous cela est possible. En effet, il est possible de signaler au designer que nous souhaitons utiliser une certaine instance pour notre DataContext quand nous l’utilisons, ces propriétés seront ignorées au moment de la compilation.
Lire la suite…

Publié dans .NET, Développement, Silverlight, WPF.

Classé dans , , , , , .


Voyage au centre de la faille SMB2

Faille SMB2

Hier, je lisais mes flux RSS quand un article a attiré toute mon attention : Des hackers défient Microsoft et exploitent une faille.

Cet article fait référence à une faille parue le 9 Septembre 2009 sur le protocole SMB2. En effet, il y a quelques jours H.D Moore annonce l’intégration d’un exploit dans Metasploit, et là je me suis dit « Si je revenais un peu aux sources ? ». Donc aujourd’hui, je vous propose une petite exploration au cœur du noyau de Windows 7 RC x64 afin de comprendre d’où provient tout ce brouhaha.
Lire la suite…

Publié dans Windows.

Classé dans , , .