为什么不应该在动态对象上调用扩展方法?

时间:2016-08-14 14:47:46

标签: c# dynamic extension-methods

鉴于以下类别:

public class Person
{
    public string Name { get; set; }
}

public static class ExtenionPerson
{
    public static string GetPersonName(this Person person)
    {
        return person.Name;
    }
}

其中一个人有一个名字,并且有一个扩展方法来获取该人名。现在,如果我这样做:

dynamic person = new Person { Name = "Jon" };
var name = person.GetPersonName();

会抛出一个RuntimeBinderException。

我知道不应该在动态对象上调用扩展方法,但为什么现在允许这样做?我的猜测是,因为扩展方法在编译时解析,动态对象在运行时解析,如intelisense所指定。这有多正确?

0 个答案:

没有答案