HiveBrain v1.2.0
Get Started
← Back to all entries
snippetcsharpCritical

Can anonymous class implement interface?

Submitted by: @import:stackoverflow-api··
0
Viewed 0 times
classinterfaceanonymouscanimplement

Problem

Is it possible to have an anonymous type implement an interface?

I've got a piece of code that I would like to work, but don't know how to do this.

I've had a couple of answers that either say no, or create a class that implements the interface construct new instances of that. This isn't really ideal, but I'm wondering if there is a mechanism to create a thin dynamic class on top of an interface which would make this simple.

public interface DummyInterface
{
    string A { get; }
    string B { get; }
}

public class DummySource
{
    public string A { get; set; }
    public string C { get; set; }
    public string D { get; set; }
}

public class Test
{
    public void WillThisWork()
    {
        var source = new DummySource[0];
        var values = from value in source
                     select new
                     {
                         A = value.A,
                         B = value.C + "_" + value.D
                     };

        DoSomethingWithDummyInterface(values);

    }

    public void DoSomethingWithDummyInterface(IEnumerable values)
    {
        foreach (var value in values)
        {
            Console.WriteLine("A = '{0}', B = '{1}'", value.A, value.B);
        }
    }
}


I've found an article Dynamic interface wrapping that describes one approach. Is this the best way of doing this?

Solution

No, anonymous types cannot implement an interface. From the C# programming guide:


Anonymous types are class types that consist of one or more public read-only properties. No other kinds of class members such as methods or events are allowed. An anonymous type cannot be cast to any interface or type except for object.

Context

Stack Overflow Q#191013, score: 394

Revisions (0)

No revisions yet.