/// <summary>
        ///     If there is a <see cref="IDefaultedFacet" />on the properties return Type, then installs a
        ///     <see cref="IPropertyDefaultFacet" /> for the property with the same default.
        /// </summary>
        public override bool Process(MethodInfo method, IMethodRemover methodRemover, IFacetHolder holder) {
            // don't overwrite any defaults already picked up
            if (holder.ContainsFacet(typeof (IPropertyDefaultFacet))) {
                return false;
            }

            // try to infer defaults from the underlying return Type
            Type returnType = method.ReturnType;
            IDefaultedFacet returnTypeDefaultedFacet = GetDefaultedFacet(returnType);
            if (returnTypeDefaultedFacet != null) {
                var propertyFacet = new PropertyDefaultFacetDerivedFromDefaultedFacet(returnTypeDefaultedFacet, holder);
                return FacetUtils.AddFacet(propertyFacet);
            }
            return false;
        }
        /// <summary>
        ///     If there is a <see cref="IDefaultedFacet" /> on any of the action's parameter types, then installs a
        ///     <see cref="IActionDefaultsFacet" /> for the action.
        /// </summary>
        public override bool ProcessParams(MethodInfo method, int paramNum, IFacetHolder holder) {
            // don't overwrite any defaults already picked up
            if (holder.ContainsFacet(typeof (IActionDefaultsFacet))) {
                return false;
            }

            // try to infer defaults from any of the parameter's underlying types

            Type paramType = method.GetParameters().Select(parameterInfo => parameterInfo.ParameterType).ToArray()[paramNum];
            IDefaultedFacet defaultedFacet = GetDefaultedFacet(paramType);
            if (defaultedFacet != null) {
                return FacetUtils.AddFacet(new ActionDefaultsFacetDerivedFromDefaultedFacets(defaultedFacet, holder));
            }
            return false;
        }
Пример #3
0
 internal static bool DoNotCount(IFacetHolder holder) {
     return holder.ContainsFacet<INotCountedFacet>();
 }