public DefaultBatchInvoker(IPropertyInvoker propertyInvoker, MethodActivator activator, ISharpBatchTrackingFactory trakingFactory, IModelSerializer modelserializer)
        {
            if (propertyInvoker == null)
            {
                throw new ArgumentNullException(nameof(propertyInvoker));
            }

            if (activator == null)
            {
                throw new ArgumentNullException(nameof(activator));
            }

            if (trakingFactory == null)
            {
                throw new ArgumentNullException(nameof(trakingFactory));
            }

            if (modelserializer == null)
            {
                throw new ArgumentNullException(nameof(modelserializer));
            }

            _propertyInvoker   = propertyInvoker;
            _activator         = activator;
            _sharpBatchTraking = trakingFactory.getTrakingProvider();
            _modelSerializer   = modelserializer;
        }
        public void ParseExpression()
        {
            IPropertyInvoker invoker = ReflectionPropertyInvoker.Instance;

            //Expression<Action<object, object>> setPropertyFn =
            //    () => invoker.ConvertValueFn = null;

            //var foo = new Foo();
            //var a = () => foo.Bar = "Hello";
            var a = (Action <Foo, string>) delegate(Foo foo, string value)
            {
                foo.Bar = "Hello";
            };
        }