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); } } }