refit
refit copied to clipboard
[Bug]: "doesn't look like a Refit interface" when inheriting empty interface from interface with refit function
Describe the bug 🐞
Inheriting an empty interface from a base interface with refit methods causing it to not be detected. Seems like this issue occurs during roselyn code generation because no classes are generated for the derived interface(s)
Step to reproduce
using System;
using System.Threading;
using System.Threading.Tasks;
using Refit;
public interface IBaseService
{
[Get("/resources")]
Task<string> GetResource(string id);
}
public interface IDerivedServiceA : IBaseService
{
}
public class Program
{
public static void Main()
{
var api = RestService.For<IDerivedServiceA>("https://example.com");
Console.WriteLine(api.GetResource("abc"));
}
}
(Tested at https://dotnetfiddle.net/ with refit package installed)
Reproduction repository
No response
Expected behavior
No error about doesn't look like a Refit interface. Provided example should only stumble when trying to do the actual API call because the api doesn't exist
Screenshots 🖼️
No response
IDE
Visual Studio 2022
Operating system
No response
Version
No response
Device
No response
Refit Version
7.0.0
Additional information ℹ️
Probably happens on other (older) versions too. Reproduced it with 7.0.0 in my minimal sample
Are there any use cases for this? I wonder if this is intentional to prevent Refit from generating several identical classes.
My use case was multiple apis where only the healthcheck was interesting combined with dependency injection, where I needed different interfaces for different apis.
As a workaround I added a dummy endpoint to IDerivedServiceA
Hey, not sure when it was fixed, but this appears to work in Refit 8.0.0
@pagdot Are you able to confirm that this is now resolved.
Minimal sample now compiles and runs as expected :) Thanks for checking it :)
This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.