Edit

Share via


CA2256: All members declared in parent interfaces must have an implementation in a DynamicInterfaceCastableImplementation-attributed interface

Property Value
Rule ID CA2256
Title All members declared in parent interfaces must have an implementation in a DynamicInterfaceCastableImplementation-attributed interface
Category Usage
Fix is breaking or non-breaking Non-breaking
Enabled by default in .NET 9 As warning

Cause

An interface with DynamicInterfaceCastableImplementationAttribute has a non-implemented member.

Rule description

Types attributed with DynamicInterfaceCastableImplementationAttribute act as an interface implementation for a type that implements the IDynamicInterfaceCastable type. As a result, it must provide an implementation of all of the members defined in the inherited interfaces, because the type that implements IDynamicInterfaceCastable will not provide them otherwise.

How to fix violations

Implement the missing interface members.

Example

interface IParent
{
    void ParentMethod();
}

// This interface violates the rule.
[DynamicInterfaceCastableImplementation]
interface IBadChild : IParent
{
    static void ChildMethod()
    {
        // ...
    }
}

// This interface satisfies the rule.
[DynamicInterfaceCastableImplementation]
interface IGoodChild : IParent
{
    static void ChildMethod()
    {
        // ...
    }

    void IParent.ParentMethod()
    {
        // ...
    }
}

When to suppress errors

Do not suppress a warning from this rule.

See also