public static BindableDomainObjectPropertyReflector Create(
     IPropertyInformation propertyInfo,
     BindableObjectProvider businessObjectProvider,
     IDomainModelConstraintProvider domainModelConstraintProvider,
     IDefaultValueStrategy defaultValueStrategy)
 {
     return(ObjectFactory.Create <BindableDomainObjectPropertyReflector> (
                true,
                ParamList.Create(propertyInfo, businessObjectProvider, domainModelConstraintProvider, defaultValueStrategy)));
 }
 protected BindableDomainObjectPropertyReflector(
     IPropertyInformation propertyInfo,
     BindableObjectProvider businessObjectProvider,
     IDomainModelConstraintProvider domainModelConstraintProvider,
     IDefaultValueStrategy defaultValueStrategy)
     : this(propertyInfo,
            businessObjectProvider,
            domainModelConstraintProvider,
            defaultValueStrategy,
            SafeServiceLocator.Current.GetInstance <IBindablePropertyReadAccessStrategy>(),
            SafeServiceLocator.Current.GetInstance <IBindablePropertyWriteAccessStrategy>(),
            SafeServiceLocator.Current.GetInstance <BindableObjectGlobalizationService>())
 {
 }
コード例 #3
0
            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;
            }
        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;
        }
コード例 #5
0
        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();
        }
 public BindableDomainObjectDefaultValueStrategy()
 {
     _innerDefaultValueStrategy = new BindableObjectDefaultValueStrategy();
 }