public override INakedObject[] GetChoices(INakedObject target, IDictionary <string, INakedObject> parameterNameValues)
        {
            var propertyChoicesFacet = GetFacet <IPropertyChoicesFacet>();
            var enumFacet            = GetFacet <IEnumFacet>();

            object[] objectOptions = propertyChoicesFacet == null ? null : propertyChoicesFacet.GetChoices(target, parameterNameValues);
            if (objectOptions != null)
            {
                if (enumFacet == null)
                {
                    return(Manager.GetCollectionOfAdaptedObjects(objectOptions).ToArray());
                }
                return(Manager.GetCollectionOfAdaptedObjects(enumFacet.GetChoices(target, objectOptions)).ToArray());
            }

            objectOptions = enumFacet == null ? null : enumFacet.GetChoices(target);
            if (objectOptions != null)
            {
                return(Manager.GetCollectionOfAdaptedObjects(objectOptions).ToArray());
            }

            if (ReturnSpec.IsBoundedSet())
            {
                return(Manager.GetCollectionOfAdaptedObjects(persistor.GetBoundedSet(ReturnSpec)).ToArray());
            }
            return(null);
        }
        public virtual Tuple <INakedObject, TypeOfDefaultValue> GetDefaultObject(INakedObject fromObject)
        {
            Tuple <object, TypeOfDefaultValue> defaultValue = null;

            // Check Facet on property, then facet on type finally fall back on type;

            var defaultsFacet = GetFacet <IPropertyDefaultFacet>();

            if (defaultsFacet != null && !defaultsFacet.IsNoOp)
            {
                defaultValue = new Tuple <object, TypeOfDefaultValue>(defaultsFacet.GetDefault(fromObject), TypeOfDefaultValue.Explicit);
            }

            if (defaultValue == null)
            {
                var defaultFacet = ReturnSpec.GetFacet <IDefaultedFacet>();
                if (defaultFacet != null && !defaultFacet.IsNoOp)
                {
                    defaultValue = new Tuple <object, TypeOfDefaultValue>(defaultFacet.Default, TypeOfDefaultValue.Implicit);
                }
            }

            if (defaultValue == null)
            {
                object rawValue = fromObject == null ? null : fromObject.Object.GetType().IsValueType ? (object)0 : null;
                defaultValue = new Tuple <object, TypeOfDefaultValue>(rawValue, TypeOfDefaultValue.Implicit);
            }

            return(new Tuple <INakedObject, TypeOfDefaultValue>(Manager.CreateAdapter(defaultValue.Item1, null, null), defaultValue.Item2));
        }
Esempio n. 3
0
 public static ReturnSpec To(Expression<Func<int>> thefunc )
 {
     var call = thefunc.Body as MethodCallExpression;
     MethodBase theMethod = call.Method;
     ReturnSpec rs = new ReturnSpec(theMethod);
     return rs;
 }
Esempio n. 4
0
 public bool IsFinderMethodFor(IObjectSpecImmutable spec)
 {
     if (!IsFinderMethod)
     {
         return(false);
     }
     if (ReturnSpec.IsCollection && ElementSpec.IsOfType(spec))
     {
         return(true);
     }
     return(ReturnSpec.IsOfType(spec));
 }
 public bool IsFinderMethodFor(IObjectSpecImmutable spec)
 {
     return(IsFinderMethod && (ReturnSpec.IsOfType(spec) || (ReturnSpec.IsCollection && ElementSpec.IsOfType(spec))));
 }