コード例 #1
0
        public static void RunSimpleMultiDemo()
        {
            Source      source = new Source();
            Destination dest   = new Destination();

            Arrow <Tuple <int, int>, int> multiplier = Op.Arr((Tuple <int, int> x) => x.Item1 * x.Item2);

            Arrow <int, int>     square = Op.Arr((int x) => x * x);
            Func <int, int, int> add    = (int x, int y) => x + y;

            Arrow <Tuple <int, int>, int> pythagoras = Op.And(square, square)
                                                       .Unsplit(add)
                                                       .Combine(Op.Arr((int x) => (int)Math.Sqrt(x)));

            BindingsManager.CreateBinding(BindingsManager.BindPoints(new BindPoint(source, "source"), new BindPoint(source, "multiplies")),
                                          pythagoras,
                                          BindingsManager.BindPoints(new BindPoint(dest, "result")));
            source.multiplies = 2;
            source.source     = 3;

            if (dest.result == pythagoras.Invoke(Tuple.Create(source.source, source.multiplies)))
            {
                Console.WriteLine("Multibindings in one direction work :)");
            }
            else
            {
                Console.WriteLine("Ohnoes multibindings in one direction don't work");
            }
        }