I have this code snippet here:

```
class A
{
    public void Method()
    {
        Console.WriteLine("A");
    }
}

class B: A
{
    public new void Method()
    {
        Console.WriteLine("B");
    }
}
class Program
{
    static void Main(string[] args)
    {
        A v1 = new B();
        v1.Method();

        dynamic v2 = v1;
        v2.Method();

        Console.ReadKey();
    }
}

```

The output is:  

 A  

 B  

I'm trying to understand why, when using dynamic as the type for the variable v2, does B.Method() get invoked. I know that since B.Method() is declared using **new** it is a different method than A.Method(), it just has the same signature. If I declare variable v2 as a B (and do a cast) the code does what I expected, prints out B.

So why does **dynamic** make .NET treat v2 as a B and not an A?

Thank you!