/// <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; }
internal static bool DoNotCount(IFacetHolder holder) { return holder.ContainsFacet<INotCountedFacet>(); }