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