Однажды созданный, не может быть изменен. Рассмотрим класс, экземпляр которого может быть использован в качестве ключа для хеш-таблицы или аналогичного. Ознакомьтесь с лучшими практиками Java.
Вы можете использовать анонимные функции, вам просто нужно сначала привести их:
dynamic list = new List<string>() { "10", "20" };
dynamic converted = list.ConvertAll((Func<string, int>) (x => int.Parse(x)));
То же самое верно и для преобразований групп методов:
foo.Click += (EventHandler) MyClickHandler;
Другие ограничения, которые я встречены до сих пор:
dynamic
в ограничении типа Вы не можете использовать dynamic
в качестве аргумента типа в интерфейсе для объявления класса, но вы можете использовать его в качестве аргумента типа для базовый класс, то есть
class Invalid: IEnumerable
class Valid: List
Методы расширения не обнаруживаются во время выполнения (но вы можете вызвать статический метод напрямую с динамическими аргументами)
dynamic []
в IEnumerable
- это будет исправлено в выпуске. dynamic
в качестве базового класса (обратите внимание, что это ограничения C # 4.0 так же, как и самого DLR. У меня сложилось впечатление, что вы имели в виду именно это.)