Visual Studio 2010 beta |
Начиная со среды, 20 мая, все желающие могут ознакомиться с бета-версией новейшей среды разработки Visual Studio 2010 и .NET Framrwork 4.0. Вся информация о способах загрузки находится на этой странице.
Развернутое описание об изменениях в целом, а не только в csharp, можно найти тут, а не тот голимый отчет, что был выложен кем-то на хабре ради кармы.
Меня больше всего заинтересовало пока расширение UML возможностей для рисования схем и логик (всегда мечтал рисовать, а не кодить), а также новый модификатор переменных dynamic. Он нужен при работе с объектами, которые подгружаются как DLR (Dynamic Language Runtime). Например, если Вы подгрузили библиотеку и хотите вызвать какую-то ее функцию или работаете с OfficeAPI, то теперь ваш код будет гораздо короче. Вот пример кода вызывающего функцию объекта неизвестного типа, как это было еще в c#2.0:
Copy Source | Copy HTML- public static void MyMethod<T>(T item)
- {
- var getMethod = typeof(T).GetMethod("MyMethod");
- if (getMethod == null)
- throw new InvalidOperationException();
- getMethod.Invoke(item, new object[0]);
- }
Теперь же с новым модификатором dynamic можно просто писать:
Copy Source | Copy HTML- public static void MyMethod<T>(T item)
- {
- dynamic di = item;
- di.MyMethod();
- }
В первоисточнике также говориться, что если посмотреть рефлекшен, то в нем MSVS2010 запишет следующий код, который достаточно похож на старый вариант:
Copy Source | Copy HTML- public static void MyMethod<T>(T item)
- {
- object di = item;
- if (<MyMethod>o__SiteContainer0<T>.<>p__Site1 == null)
- {
- <MyMethod>o__SiteContainer0<T>.<>p__Site1 = CallSite<Action<CallSite, object>>.Create(new CSharpCallPayload(RuntimeBinder.GetInstance(), false, false, "MyMethod", typeof(object), null));
- }
- <MyMethod>o__SiteContainer0<T>.<>p__Site1.Target<MyMethod>o__SiteContainer0<T>.<>p__Site1, di);
- }
Комментировать | « Пред. запись — К дневнику — След. запись » | Страницы: [1] [Новые] |