コード例 #1
0
        public void ApplyTo(T obj, ObjectValueProvider valueProvider)
        {
            object value;

            if (!valueProvider.TryGetValue(_property.Property.Name, out value))
            {
                return;
            }
            if (value == null)
            {
                return;
            }

            if (value is T)
            {
                _property.Set(obj, value);
                return;
            }

            var s = value as string;

            if (s != null)
            {
                object enumValue = Enum.Parse(_property.Property.PropertyType, s);
                _property.Set(obj, enumValue);
                return;
            }

            object n = Enum.ToObject(_property.Property.PropertyType, value);

            _property.Set(obj, n);
        }
コード例 #2
0
        Task StateAccessor <TInstance> .Set(InstanceContext <TInstance> context, State <TInstance> state)
        {
            if (state == null)
            {
                throw new ArgumentNullException(nameof(state));
            }

            var previous = _property.Get(context.Instance);

            if (state.Name.Equals(previous))
            {
                return(TaskUtil.Completed);
            }

            _property.Set(context.Instance, state.Name);

            State <TInstance> previousState = null;

            if (previous != null)
            {
                previousState = _machine.GetState(previous);
            }

            return(_observer.StateChanged(context, state, previousState));
        }
コード例 #3
0
        public void ApplyTo(T obj, ObjectValueProvider valueProvider)
        {
            ArrayValueProvider values;

            if (!valueProvider.TryGetValue(_property.Property.Name, out values))
            {
                return;
            }

            var elements = new Dictionary <TKey, TValue>();

            for (int i = 0;; i++)
            {
                ArrayValueProvider elementArray;
                if (!values.TryGetValue(i, out elementArray))
                {
                    break;
                }

                TKey elementKey;
                if (elementArray.TryGetValue(0, out elementKey))
                {
                    TValue elementValue = default(TValue);
                    ObjectValueProvider elementValueProvider;
                    if (elementArray.TryGetValue(1, out elementValueProvider))
                    {
                        elementValue = (TValue)_valueConverter.GetObject(elementValueProvider);
                    }

                    elements[elementKey] = elementValue;
                }
            }

            _property.Set(obj, elements);
        }
コード例 #4
0
        public void ApplyTo(T obj, IObjectValueProvider valueProvider)
        {
            object value;

            if (valueProvider.TryGetValue(_property.Property.Name, out value))
            {
                if (value != null)
                {
                    var valueType = value.GetType();
                    if (!valueType.IsInstanceOfType(_property.Property.PropertyType))
                    {
                        if (_typeConverter.IsValid(value))
                        {
                            if (_typeConverter.CanConvertFrom(valueType))
                            {
                                value = _typeConverter.ConvertFrom(value);
                            }
                        }
                    }
                }

                if (value != null)
                {
                    _property.Set(obj, value);
                }
            }
        }
コード例 #5
0
        public void SetRequestId(TInstance instance, Guid? requestId)
        {
            if (instance == null)
                throw new ArgumentNullException(nameof(instance));

            _requestIdProperty?.Set(instance, requestId);
        }
コード例 #6
0
        public void ApplyTo(T obj, IObjectValueProvider valueProvider)
        {
            IArrayValueProvider values;

            if (!valueProvider.TryGetValue(_property.Property.Name, out values))
            {
                return;
            }

            var elements = new Dictionary <TKey, TValue>();

            for (var i = 0;; i++)
            {
                IArrayValueProvider elementArray;
                if (!values.TryGetValue(i, out elementArray))
                {
                    break;
                }

                TKey elementKey;
                if (elementArray.TryGetValue(0, out elementKey))
                {
                    TValue elementValue;
                    elementArray.TryGetValue(1, out elementValue);

                    elements[elementKey] = elementValue;
                }
            }

            _property.Set(obj, elements);
        }
コード例 #7
0
        public override void SelectBasicTier()
        {
            _autoDeleteOnIdle.Set(QueueDescription, default(TimeSpan?));
            _enableExpress.Set(QueueDescription, default(bool?));

            QueueDescription.DefaultMessageTimeToLive = TimeSpan.FromDays(14);
        }
コード例 #8
0
        public void ApplyTo(T obj, IObjectValueProvider valueProvider)
        {
            IArrayValueProvider values;

            if (!valueProvider.TryGetValue(_property.Property.Name, out values))
            {
                return;
            }

            var elements = new List <TElement>();

            for (var i = 0;; i++)
            {
                IObjectValueProvider elementValueProvider;
                if (!values.TryGetValue(i, out elementValueProvider))
                {
                    break;
                }

                var element = (TElement)_converter.GetObject(elementValueProvider);
                elements.Add(element);
            }

            _property.Set(obj, elements.ToArray());
        }
コード例 #9
0
 public void Apply(TInput result, TransformContext <TInput> context)
 {
     if (context.HasInput)
     {
         TProperty value = _propertyProvider.GetProperty(context);
         _property.Set(result, value);
     }
 }
コード例 #10
0
        public void ApplyTo(T obj, IObjectValueProvider valueProvider)
        {
            object value;

            if (valueProvider.TryGetValue(_property.Property.Name, out value))
            {
                var nullableValue = (TValue?)value;
                _property.Set(obj, nullableValue);
            }
        }
コード例 #11
0
        public void ApplyTo(T obj, ObjectValueProvider valueProvider)
        {
            ObjectValueProvider propertyProvider;

            if (valueProvider.TryGetValue(_property.Property.Name, out propertyProvider))
            {
                object propertyObj = _converter.GetObject(propertyProvider);

                _property.Set(obj, propertyObj);
            }
        }
コード例 #12
0
        public void ApplyTo(T obj, ObjectValueProvider valueProvider)
        {
            object value;

            if (valueProvider.TryGetValue(_property.Property.Name, out value))
            {
                if (value != null)
                {
                    _property.Set(obj, value);
                }
            }
        }
コード例 #13
0
        public void ApplyTo(T obj, IObjectValueProvider valueProvider)
        {
            object value;

            if (valueProvider.TryGetValue(_property.Property.Name, out value))
            {
                TValue?nullableValue = value as TValue?;
                if (!nullableValue.HasValue)
                {
                    nullableValue = (TValue)Convert.ChangeType(value, typeof(TValue));
                }

                _property.Set(obj, nullableValue);
            }
        }
コード例 #14
0
        public void Should_be_able_to_access_a_private_setter()
        {
            var instance = new PrivateSetter();

            PropertyInfo property = instance.GetType()
                                            .GetProperties(BindingFlags.Instance | BindingFlags.Public)
                                            .Where(x => x.Name == "Name")
                                            .First();

            var fastProperty = new ReadWriteProperty<PrivateSetter>(property, true);

            const string expectedValue = "Chris";
            fastProperty.Set(instance, expectedValue);

            Assert.AreEqual(expectedValue, fastProperty.Get(instance));
        }
コード例 #15
0
        public void ApplyTo(T obj, IObjectValueProvider valueProvider)
        {
            object value;

            if (valueProvider.TryGetValue(_property.Property.Name, out value))
            {
                var nullableValue = value as TValue?;
                if (!nullableValue.HasValue)
                {
                    var converter = TypeDescriptor.GetConverter(typeof(TValue));
                    nullableValue = converter.CanConvertFrom(value.GetType())
                        ? (TValue?)converter.ConvertFrom(value)
                        : null;
                }

                _property.Set(obj, nullableValue);
            }
        }
コード例 #16
0
        public void Should_be_able_to_access_a_private_setter()
        {
            var instance = new PrivateSetter();

            var property = instance
                           .GetType()
                           .GetProperties(BindingFlags.Instance | BindingFlags.Public)
                           .First(x => x.Name == "Name");


            var fastProperty = new ReadWriteProperty <PrivateSetter>(property);

            const string expectedValue = "Chris";

            fastProperty.Set(instance, expectedValue);

            Assert.AreEqual(expectedValue, fastProperty.Get(instance));
        }
コード例 #17
0
        void Execute(Composer composer, TInstance instance)
        {
            composer.Execute(() =>
            {
                CompositeEventStatus value = _property.Get(instance);
                value.Set(_flag);

                _property.Set(instance, value);

                if (!value.Equals(_complete))
                {
                    return(composer.ComposeCompleted());
                }

                var taskComposer = new TaskComposer <TInstance>(composer.CancellationToken);

                _completeCallback(taskComposer, instance);

                return(taskComposer.Finish());
            });
        }
コード例 #18
0
        Task StateAccessor <TInstance> .Set(InstanceContext <TInstance> context, State <TInstance> state)
        {
            if (state == null)
            {
                throw new ArgumentNullException(nameof(state));
            }

            var stateIndex = _index[state.Name];

            var previousIndex = _property.Get(context.Instance);

            if (stateIndex == previousIndex)
            {
                return(TaskUtil.Completed);
            }

            _property.Set(context.Instance, stateIndex);

            var previousState = _index[previousIndex];

            return(_observer.StateChanged(context, state, previousState));
        }
コード例 #19
0
        public void ApplyTo(T obj, ObjectValueProvider valueProvider)
        {
            ArrayValueProvider values;

            if (!valueProvider.TryGetValue(_property.Property.Name, out values))
            {
                return;
            }

            var elements = new List <TElement>();

            for (int i = 0;; i++)
            {
                TElement element;
                if (!values.TryGetValue(i, out element))
                {
                    break;
                }

                elements.Add(element);
            }

            _property.Set(obj, elements.ToArray());
        }
コード例 #20
0
 public void SetRequestId(TInstance instance, Guid requestId)
 {
     _requestIdProperty.Set(instance, requestId);
 }
コード例 #21
0
 public void SetTokenId(TInstance instance, Guid?tokenId)
 {
     _tokenIdProperty.Set(instance, tokenId);
 }
コード例 #22
0
 public void Set(TInstance instance, CompositeEventStatus status)
 {
     _property.Set(instance, status);
 }