Comments (4)
Yeah I was wondering about this when you added the warning for it. It adds a bit of complexity to RequestBuilderImplementation
and the stub generation (and would mean a bit of duplication), but it would be good to allow the interface to match a Web API class almost 1 to 1.
@paulcbetts, can you think of any reason why this would be a bad idea?
from refit.
I'm not super excited about it, seems like a lot of added internal complexity. If I'm wrong though I'd take a PR!
from refit.
I think it can be resolved in the template generator. Simply assign a unique ordinal to each method by changing this line...
ret.MethodList = interfaceTree.Members
.OfType<MethodDeclarationSyntax>()
.Select((x,i) => new MethodTemplateInfo() {
Name = x.Identifier.ValueText,
ReturnType = x.ReturnType.ToString(),
ArgumentList = String.Join(",", x.ParameterList.Parameters
.Select(y => y.Identifier.ValueText)),
ArgumentListWithTypes = String.Join(",", x.ParameterList.Parameters
.Select(y => String.Format("{0} {1}", y.Type.ToString(), y.Identifier.ValueText))),
IsRefitMethod = HasRefitHttpMethodAttribute(x),
MethodNumber = i,
})
Something like that. Then Maybe switch to an array. And have each method stub lazily initialize itself. Or alternatively come up with a way to do the methodinfo reflection in a safe way. I don't know enough about the gimped TypeInfo version of reflection otherwise I might do it myself.
(Change the ToDictionary to a bunch of calls to Add passing in the appropriate ordinal.)
from refit.
I used something similar using mangled method names instead of method number.
It is still a Dictionary but I think it will be more readable and debug-able.
from refit.
Related Issues (20)
- [Bug]: CollectionFormat.Csv causes strings to be serialized as comma separated chars
- [Bug]: Naming the interface to end with "Client" will result in an error during injection.
- Generated code should use `Array.Empty` or constant field where possible HOT 1
- [Bug]: Failed to generate generated classes in Azure Devops with Refit version 6.3.2 and 7.0.0
- Suggestion: run code cleanup/formatter HOT 1
- Target .NET 8 in Refit HOT 4
- Make fullstack C# development easier
- Add handlers to the interface method parameters and headers before generating the HttpRequestMessage
- [Bug]: POST request sent as GET HOT 9
- [Bug]: Long-lived HttpClient instance despite use of IHttpClientFactory HOT 1
- [Bug]: HttpClients not disposed
- [Bug]: Request streams get disposed and there is no option to avoid it
- Source generator for minimal API
- [Bug]: Cannot set the Content-Type header for a POST request HOT 2
- [Bug]: Refit Does Not Generate Implementations if 3+ Interfaces Share a Name HOT 1
- [Bug]: exception with TrimMode full: "URL /path/{id} has parameter id, but no method parameter matches"
- Dependency Dashboard
- [NiceToHave]: Interface `IApiResponse<out T>` misses `[MemberNotNullWhen(true, nameof(Content))]` attribute
- [Bug]: Using `Refit.HttpClientFactory` with a .Net 8 Blazor Web App HOT 5
- Ability to more simply configure a scoped authorization token
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from refit.