Esempio n. 1
0
        static void Main(string[] args)
        {
            #region two-stage path

            ParentDataClass parentDataObj = new ParentDataClass();
            //parentDataObj.TheData = new DataClass();
            //parentDataObj.TheData.MyStringProp = "Hello World";

            object targetObj = new object();

            OneWayPropertyBindingBase<string, string> binding = new OneWayPropertyBindingBase<string, string>();

            TwoStagePropGetter compoundPropGetter = new TwoStagePropGetter(parentDataObj);

            binding.SourcePropertyGetter = compoundPropGetter;
            binding.TargetPropertySetter = new APropSetter<string>(targetObj, MyAProperty);

            binding.Bind();

            Console.WriteLine(MyAProperty.GetProperty(targetObj));
            parentDataObj.TheData = new DataClass();
            parentDataObj.TheData.MyStringProp = "Hi World";
            Console.WriteLine(MyAProperty.GetProperty(targetObj));

            parentDataObj.TheData = new DataClass { MyStringProp = "blablabla" };
            Console.WriteLine(MyAProperty.GetProperty(targetObj));

            parentDataObj.TheData.MyStringProp = "Hello World";
            Console.WriteLine(MyAProperty.GetProperty(targetObj));

            parentDataObj.TheData.MyStringProp = null;

            string result = MyAProperty.GetProperty(targetObj);

            if (result == null)
                Console.WriteLine("NULL");
            else
                Console.WriteLine("NOT NULL");

            parentDataObj.TheData = null;
            Console.WriteLine(MyAProperty.GetProperty(targetObj));
            #endregion two-stage path
        }
Esempio n. 2
0
        static void Main(string[] args)
        {
            // create source object
            ParentDataClass sourceDataObj = new ParentDataClass();

            sourceDataObj.TheData = new DataClass { MyStringProp = "Hello World" };

            // create target object
            ParentDataClass targetDataObject = new ParentDataClass();
            targetDataObject.TheData = new DataClass();

            // create the binding
            OneWayPropertyBindingBase<object, object> binding = new OneWayPropertyBindingBase<object, object>();

            CompositePathGetter sourcePathGetter =
                new CompositePathGetter
                (
                    new BindingPathLink<object>[]
                    {
                        new BindingPathLink<object>("TheData"),
                        new BindingPathLink<object>("MyStringProp"),
                    },

                    "A Default String"
                );

            sourcePathGetter.TheObj = sourceDataObj;

            binding.SourcePropertyGetter = sourcePathGetter;

            CompositePathSetter targetPathSetter = new CompositePathSetter
                (
                    new BindingPathLink<object>[]
                    {
                        new BindingPathLink<object>("TheData"),
                        new BindingPathLink<object>("MyStringProp")
                    }
                );

            targetPathSetter.TheObj = targetDataObject;
            binding.TargetPropertySetter = targetPathSetter;

            binding.Bind();

            Console.WriteLine(targetDataObject.TheData.MyStringProp);

            sourceDataObj.TheData.MyStringProp = "Hi World";

            Console.WriteLine(targetDataObject.TheData.MyStringProp);

            sourceDataObj.TheData = new DataClass { MyStringProp = "bye bye" };

            Console.WriteLine(targetDataObject.TheData.MyStringProp);

            sourceDataObj.TheData = null;

            Console.WriteLine(targetDataObject.TheData.MyStringProp);

            targetDataObject.TheData = new DataClass();

            Console.WriteLine(targetDataObject.TheData.MyStringProp);

            targetDataObject.TheData.MyStringProp = "Hi";

            Console.WriteLine(targetDataObject.TheData.MyStringProp);
            targetDataObject.TheData = new DataClass();
            Console.WriteLine(targetDataObject.TheData.MyStringProp);
        }