Хорошо, вместо того, чтобы ждать ответа, я запустил Visual Studio 2010 beta 2, и эта тестовая программа работает нормально:
class Foo
{
public string foo = "Foo!";
}
class Bar
{
public int bar = 42;
}
class Program
{
static void Main(string[] args)
{
var test = new List<dynamic>();
test.Add(new Foo());
test.Add(new Bar());
Console.WriteLine(test[0].foo.Substring(0,3));
Console.WriteLine(test[1].bar.ToString("000"));
Console.ReadKey(true);
}
}
Я хотел убедиться, что я не только проверял свойства с разными именами, но и имел разные типы, а также использовал в каждом типе функции, которые несовместимы друг с другом. Это , кажется, предполагает, что , если что-либо кэшируется, среда выполнения достаточно умна, чтобы знать, когда использовать кэш, а когда нет. Я все еще хотел бы услышать, знает ли кто-нибудь крайний случай, когда это не может иметь место, или более авторитетный комментарий, почему это будет.