refit icon indicating copy to clipboard operation
refit copied to clipboard

[Bug]: "doesn't look like a Refit interface" when inheriting empty interface from interface with refit function

Open pagdot opened this issue 1 year ago • 2 comments

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

pagdot avatar Apr 24 '24 14:04 pagdot

Are there any use cases for this? I wonder if this is intentional to prevent Refit from generating several identical classes.

TimothyMakkison avatar Sep 04 '24 09:09 TimothyMakkison

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

pagdot avatar Sep 04 '24 11:09 pagdot

Hey, not sure when it was fixed, but this appears to work in Refit 8.0.0

TimothyMakkison avatar Nov 09 '24 17:11 TimothyMakkison

@pagdot Are you able to confirm that this is now resolved.

ChrisPulman avatar Nov 09 '24 19:11 ChrisPulman

Minimal sample now compiles and runs as expected :) Thanks for checking it :)

pagdot avatar Nov 11 '24 09:11 pagdot

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.

github-actions[bot] avatar Nov 27 '24 00:11 github-actions[bot]