internal static IOperation AsOperation <T>(this OperationInfo <T> operation, IApiDocumentation apiDocumentation, EntityId id = null) { var methodId = id ?? operation.CreateId(apiDocumentation.Context.BaseUriSelector.SelectBaseUri(new EntityId(new Uri("/", UriKind.Relative)))); if (operation.IsWriteControllerOperation()) { switch (operation.UnderlyingMethod.Name) { case "Delete": return(apiDocumentation.Context.Create <IDeleteResourceOperation>(methodId)); case "Update": return(apiDocumentation.Context.Create <IReplaceResourceOperation>(methodId)); case "Create": return(apiDocumentation.Context.Create <ICreateResourceOperation>(methodId)); } } return(apiDocumentation.Context.Create <IOperation>(methodId)); }