Есть ли эквивалент для C# 4 'динамическое' ключевое слово при использовании безопасного с точки зрения типов VB.NET, т.е. с Option Strict On
?
Эквивалентом является Object в VB.NET, но с Option Strict Off
. С Option Strict On
эквивалента нет. С другой стороны, ключевое слово dynamic привносит Option Strict Off
эквивалентную функциональность в C#.
VB.NET всегда имеет встроенную «динамическую» функцию, первоначально называемую поздним связыванием. Этот синтаксис поддерживался вечно:
Dim obj = new SomeComClass()
obj.DoSomething()
Работал над кодом, реализованным на .NET и COM, последний был наиболее распространенным использованием. Ключевое слово dynamic в C # предоставило ему ту же возможность. Он был изменен в VB.NET версии 10, однако теперь он также использует DLR. Это добавляет поддержку динамической привязки к языковым реализациям, таким как Python и Ruby.
Синтаксис точно такой же, используйте ключевое слово Dim без As. Однако вам придется использовать Option Strict Off, Option Infer On может немного смягчить этот удар. Это действительно показывает, что использование C # определенного ключевого слова для обозначения динамической привязки было довольно хорошим ходом. Afaik все запросы сделать это в VB.NET также еще были рассмотрены, но не запланированы.
Если вы предпочитаете Option Strict On, то использование ключевого слова Partial Class, чтобы вы могли переместить часть кода в другой исходный файл, вероятно, является наиболее эффективным подходом.
Вы можете включить Option Infer On и Option Strict Off и все равно получить что-то очень близкое.