Au fil des flows

1août/140

Methode cascading en C# avec 2 methodes d’extension

Snippet C# qui vous permet d'utiliser du méthode cascading sur n'importe quel objet pour chaîner vos traitements.

Vous retrouvez ce code dans un Fiddle.

using System;

namespace MethodCascading
{
    internal static class Extension
    {
        public static T Exec<T>(this T obj1, Action<T> a)
        {
            a(obj1);
            return obj1;
        }

        public static R Exec<T, R>(this T obj1, Func<T, R> a)
        {
            return a(obj1);
        }
    }

    public class Program
    {
        public static void Main(string[] args)
        {
            Console.WriteLine("Version avec cascading");
            var result = new MyClass()
                .Exec(a => a.A())
                .Exec(a => a.B())
                .Exec(a => a.C())
                .Exec(a => a.D());

            Console.WriteLine("Version sans cascading");
            var myclass = new MyClass();
            myclass.A();
            myclass.B();
            var myclass2 = myclass.C();
            myclass2.D();
        }

        internal class MyClass
        {
            public void A()
            {
                Console.WriteLine("Appel de A");
            }

            public void B()
            {
                Console.WriteLine("Appel de B");
            }

            public MyClass2 C()
            {
                Console.WriteLine("Appel de C et Creation de MyClass2");
                return new MyClass2();
            }
        }

        internal class MyClass2
        {
            public void D()
            {
                Console.WriteLine("Appel de D");
            }
        }
    }
}

Posted by Fabien Arcellier

Remplis sous: Non classé Laisser un commentaire
Commentaires (0) Trackbacks (0)

Aucun commentaire pour l'instant


Leave a comment

Aucun trackbacks pour l'instant