Example #1
0
 protected PropertyBase.Parameters CreateParameters(
     BindableObjectProvider businessObjectProvider,
     IPropertyInformation propertyInfo,
     Type underlyingType,
     Type concreteType,
     IListInfo listInfo,
     bool isRequired,
     bool isReadOnly,
     IBindablePropertyReadAccessStrategy bindablePropertyReadAccessStrategy   = null,
     IBindablePropertyWriteAccessStrategy bindablePropertyWriteAccessStrategy = null,
     BindableObjectGlobalizationService bindableObjectGlobalizationService    = null)
 {
     return(new PropertyBase.Parameters(
                businessObjectProvider,
                propertyInfo,
                underlyingType,
                new Lazy <Type> (() => concreteType),
                listInfo,
                isRequired,
                isReadOnly,
                new BindableObjectDefaultValueStrategy(),
                bindablePropertyReadAccessStrategy ?? SafeServiceLocator.Current.GetInstance <IBindablePropertyReadAccessStrategy>(),
                bindablePropertyWriteAccessStrategy ?? SafeServiceLocator.Current.GetInstance <IBindablePropertyWriteAccessStrategy>(),
                bindableObjectGlobalizationService ?? SafeServiceLocator.Current.GetInstance <BindableObjectGlobalizationService>()));
 }
        public override void SetUp()
        {
            base.SetUp();

            _bindablePropertyReadAccessStrategyMock = MockRepository.GenerateStrictMock <IBindablePropertyReadAccessStrategy>();

            var serviceLocator = DefaultServiceLocator.Create();

            serviceLocator.RegisterSingle(() => _bindablePropertyReadAccessStrategyMock);
            _serviceLocatorScope = new ServiceLocatorScope(serviceLocator);
        }
        public override void SetUp()
        {
            base.SetUp();
            _mockRepository = new MockRepository();

            _innerStrategy1 = _mockRepository.StrictMock <IBindablePropertyReadAccessStrategy>();
            _innerStrategy2 = _mockRepository.StrictMock <IBindablePropertyReadAccessStrategy>();
            _innerStrategy3 = _mockRepository.StrictMock <IBindablePropertyReadAccessStrategy>();

            _strategy = new CompundBindablePropertyReadAccessStrategy(new[] { _innerStrategy1, _innerStrategy2, _innerStrategy3 });

            _businessObjectProvider = CreateBindableObjectProviderWithStubBusinessObjectServiceFactory();
            _property       = new StubPropertyBase(GetPropertyParameters(GetPropertyInfo(typeof(ClassWithAllDataTypes), "Byte"), _businessObjectProvider));
            _businessObject = MockRepository.GenerateStub <IBusinessObject>();
        }
            public Parameters(
                [NotNull] BindableObjectProvider businessObjectProvider,
                [NotNull] IPropertyInformation propertyInfo,
                [NotNull] Type underlyingType,
                [NotNull] Lazy <Type> concreteType,
                [CanBeNull] IListInfo listInfo,
                bool isRequired,
                bool isReadOnly,
                [NotNull] IDefaultValueStrategy defaultValueStrategy,
                [NotNull] IBindablePropertyReadAccessStrategy bindablePropertyReadAccessStrategy,
                [NotNull] IBindablePropertyWriteAccessStrategy bindablePropertyWriteAccessStrategy,
                [NotNull] BindableObjectGlobalizationService bindableObjectGlobalizationService)
            {
                ArgumentUtility.CheckNotNull("businessObjectProvider", businessObjectProvider);
                ArgumentUtility.CheckNotNull("propertyInfo", propertyInfo);
                ArgumentUtility.CheckNotNull("underlyingType", underlyingType);
                ArgumentUtility.CheckNotNull("concreteType", concreteType);
                ArgumentUtility.CheckNotNull("defaultValueStrategy", defaultValueStrategy);
                ArgumentUtility.CheckNotNull("bindablePropertyReadAccessStrategy", bindablePropertyReadAccessStrategy);
                ArgumentUtility.CheckNotNull("bindablePropertyWriteAccessStrategy", bindablePropertyWriteAccessStrategy);
                ArgumentUtility.CheckNotNull("bindableObjectGlobalizationService", bindableObjectGlobalizationService);

                BusinessObjectProvider = businessObjectProvider;
                PropertyInfo           = propertyInfo;
                UnderlyingType         = underlyingType;
                ConcreteType           = new Lazy <Type> (
                    () =>
                {
                    var actualConcreteType = concreteType.Value;
                    if (!underlyingType.IsAssignableFrom(actualConcreteType))
                    {
                        throw new InvalidOperationException(
                            string.Format(
                                "The concrete type must be assignable to the underlying type '{0}'.\r\nConcrete type: {1}",
                                underlyingType.FullName,
                                actualConcreteType.FullName));
                    }
                    return(actualConcreteType);
                },
                    LazyThreadSafetyMode.ExecutionAndPublication);
                ListInfo             = listInfo;
                IsRequired           = isRequired;
                IsReadOnly           = isReadOnly;
                DefaultValueStrategy = defaultValueStrategy;
                BindablePropertyReadAccessStrategy  = bindablePropertyReadAccessStrategy;
                BindablePropertyWriteAccessStrategy = bindablePropertyWriteAccessStrategy;
                BindableObjectGlobalizationService  = bindableObjectGlobalizationService;
            }
Example #5
0
        protected PropertyBase.Parameters GetPropertyParameters(
            IPropertyInformation property,
            BindableObjectProvider provider,
            IBindablePropertyReadAccessStrategy bindablePropertyReadAccessStrategy   = null,
            IBindablePropertyWriteAccessStrategy bindablePropertyWriteAccessStrategy = null,
            BindableObjectGlobalizationService bindableObjectGlobalizationService    = null)
        {
            var reflector = new PropertyReflector(
                property,
                provider,
                MockRepository.GenerateStub <IDefaultValueStrategy>(),
                bindablePropertyReadAccessStrategy ?? SafeServiceLocator.Current.GetInstance <IBindablePropertyReadAccessStrategy>(),
                bindablePropertyWriteAccessStrategy ?? SafeServiceLocator.Current.GetInstance <IBindablePropertyWriteAccessStrategy>(),
                bindableObjectGlobalizationService ?? SafeServiceLocator.Current.GetInstance <BindableObjectGlobalizationService>());

            return((PropertyBase.Parameters)PrivateInvoke.InvokeNonPublicMethod(
                       reflector,
                       typeof(PropertyReflector),
                       "CreateParameters",
                       GetUnderlyingType(reflector)));
        }
        public BindableDomainObjectPropertyReflector(
            IPropertyInformation propertyInfo,
            BindableObjectProvider businessObjectProvider,
            IDomainModelConstraintProvider domainModelConstraintProvider,
            IDefaultValueStrategy defaultValueStrategy,
            IBindablePropertyReadAccessStrategy bindablePropertyReadAccessStrategy,
            IBindablePropertyWriteAccessStrategy bindablePropertyWriteAccessStrategy,
            BindableObjectGlobalizationService bindableObjectGlobalizationService)
            : base(
                propertyInfo,
                businessObjectProvider,
                defaultValueStrategy,
                bindablePropertyReadAccessStrategy,
                bindablePropertyWriteAccessStrategy,
                bindableObjectGlobalizationService)
        {
            ArgumentUtility.CheckNotNull("businessObjectProvider", businessObjectProvider);
            ArgumentUtility.CheckNotNull("domainModelConstraintProvider", domainModelConstraintProvider);

            _domainModelConstraintProvider = domainModelConstraintProvider;
        }
        protected PropertyBase(Parameters parameters)
        {
            ArgumentUtility.CheckNotNull("parameters", parameters);

            if (parameters.PropertyInfo.GetIndexParameters().Length > 0)
            {
                throw new InvalidOperationException("Indexed properties are not supported.");
            }

            _businessObjectProvider = parameters.BusinessObjectProvider;
            _propertyInfo           = parameters.PropertyInfo;
            _underlyingType         = parameters.UnderlyingType;
            _listInfo             = parameters.ListInfo;
            _isRequired           = parameters.IsRequired;
            _isReadOnly           = parameters.IsReadOnly;
            _defaultValueStrategy = parameters.DefaultValueStrategy;
            _bindablePropertyReadAccessStrategy  = parameters.BindablePropertyReadAccessStrategy;
            _bindablePropertyWriteAccessStrategy = parameters.BindablePropertyWriteAccessStrategy;
            _bindableObjectGlobalizationService  = parameters.BindableObjectGlobalizationService;
            _isNullable  = GetNullability();
            _valueGetter = Maybe.ForValue(_propertyInfo.GetGetMethod(true)).Select(mi => mi.GetFastInvoker <Func <object, object> >()).ValueOrDefault();
            _valueSetter = Maybe.ForValue(_propertyInfo.GetSetMethod(true)).Select(mi => mi.GetFastInvoker <Action <object, object> >()).ValueOrDefault();
        }
 private new PropertyBase.Parameters CreateParameters(
     BindableObjectProvider businessObjectProvider = null,
     IPropertyInformation propertyInfo             = null,
     Type underlyingType = null,
     Type concreteType   = null,
     IListInfo listInfo  = null,
     bool isRequired     = false,
     bool isReadOnly     = false,
     IBindablePropertyReadAccessStrategy bindablePropertyReadAccessStrategy   = null,
     IBindablePropertyWriteAccessStrategy bindablePropertyWriteAccessStrategy = null,
     BindableObjectGlobalizationService bindableObjectGlobalizationService    = null)
 {
     return(base.CreateParameters(
                businessObjectProvider ?? _bindableObjectProvider,
                propertyInfo,
                underlyingType,
                concreteType,
                listInfo,
                isRequired,
                isReadOnly,
                bindablePropertyReadAccessStrategy,
                bindablePropertyWriteAccessStrategy,
                bindableObjectGlobalizationService));
 }