Esempio n. 1
0
        private void OnBindingTypeChanged(BindingType newType, IDataSetProvider provider)
        {
            if (_type == newType)
            {
                return;
            }

            var boundParam = Param.Get(provider);

            switch (newType)
            {
            case BindingType.Value:
                if (DefaultValue != null)
                {
                    DefaultValue.HoldType = boundParam.GetHoldType();
                }
                else
                {
                    DefaultValue = new Variant(boundParam.GetHoldType());
                }

                break;
//                case BindingType.DataSetVariable:
//                    DataSetVar = new ParameterReference();
//                    break;
            }

            _type = newType;
        }
        public void Initialize <TOwner>(TOwner instance, IDataSetProvider provider, string propName)
        {
            if (Owner != null && Property != null)
            {
                return;
            }

            Owner = new PropertyOwner <TOwner>(instance);

            var parameter = Parameter.Get(provider);
            var knownType = KnownType.GetKnownType(typeof(TOwner));

            if (knownType != null)
            {
                bool isParametrized = parameter != null && !Constant;
                var  type           = isParametrized ? parameter.GetHoldType().Type : _localValue.HoldType.Type;
                Property = knownType.GetProperty <TOwner>(type, propName);

                if (_localValue == null)
                {
                    _localValue = new Variant(type);
                }

                if (Constant)
                {
                    Owner.CallSetter(Property, isParametrized ? parameter.Value : _localValue);
                }
            }
        }