继承接口上的RuntimeBinderException

时间:2016-08-08 12:02:27

标签: c# inheritance dynamic interface

当调用接口的继承方法传递动态作为参数之一时,我得到一个RuntimebinderException。

我不明白这种行为。

这是一个完整的例子:

using System;

class Program
{
    static void Main(string[] args)
    {
        dynamic dyn = new Record();

        IAdvancedTable advTable = new Table();
        ITable table = advTable;

        // works like a charm using the "base-interface"
        table.Insert(dyn);


        // using the inherited interface throws the RuntimeBinderException
        advTable.Insert(dyn);

        Console.ReadKey();
    }
}

public interface ITable
{
    void Insert(Record record);
}

public interface IAdvancedTable : ITable{}

public class Table : IAdvancedTable
{
    public void Insert(Record record){ /*STUB*/ }
}

public class Record{}

看起来RuntimeBinder中没有递归检查实际接口上的“继承接口”。但这有什么理由吗?

0 个答案:

没有答案