当调用接口的继承方法传递动态作为参数之一时,我得到一个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中没有递归检查实际接口上的“继承接口”。但这有什么理由吗?