下面的代码效果很好.如果Get和Use方法在不同的程序集中,则代码将失败并出现RuntimeBinderException.这是因为.Net运行时系统仅保证<string, int>程序集内的匿名类型(在本例中)的通用性.
有没有办法愚弄运行时系统来克服这个问题?我可以在Use旁边的调试器中检查对象,调试器可以看到相关的属性.
class Program
{
static void Main(string[] args)
{
UsePerson();
Console.ReadLine();
}
public static void UsePerson()
{
var person = GetPerson();
Console.WriteLine(person.Name);
}
public static dynamic GetPerson()
{
return new { Name = "Foo", Age = 30 };
}
}
Run Code Online (Sandbox Code Playgroud)