In IL it is valid for an abstract Base to implement I but provide no methods. This is not possible in C#, as Base would not be allowed to be missing M. If Base does provide M, the trimmer does warn there (see RequiresCapability/BaseProvidesInterfaceMethodRequiresMismatch.cs). This is a very niche corner case and not the highest priority.
abstract class Base : I
{
}
class Derived : Base
{
public virtual void M() {} // warning IL2046
}
interface I
{
[RequiresUnreferencedCode("RUC")]
void M();
}
In IL it is valid for an abstract Base to implement I but provide no methods. This is not possible in C#, as Base would not be allowed to be missing M. If Base does provide M, the trimmer does warn there (see RequiresCapability/BaseProvidesInterfaceMethodRequiresMismatch.cs). This is a very niche corner case and not the highest priority.
See https://github.com/dotnet/runtime/pull/103317#discussion_r1718737150_ for context