[50x]Очень перспективный проект (под эгидой Ветеранов Америки) по созданию роботизированных конечностей, названный Luke Arm (в честь звездных войн), несколько месяцев назад получил второй этап финансирования в рамках организации DARPA (Исследования министерства обороны США). Проект расчитан на 3 года, и результатом должено стать массовое производство роботизированных протезов. Важной фишкой этих протезов является, что они считывают нервные импульсы, которые посылает ваш организм, тем самым позволяя управлять протезом, как собственной рукою. Правда реакция оставляет желать лучшего, но это дело времени, а пока можно наблюдать настоящих киборгов на видео ниже: Message: Sys.ArgumentException: Value must not be null for Controls and Behaviors. Parameter name: element Line: 2710 Char: 23 Code: 0 URI: /ScriptResource.axd?d=...
[показать]Copy Source | Copy HTML
[Test]
public void GetYandexTop30()
{
PostWatch pw = new PostWatch();
foreach (object toptype in Enum.GetValues(typeof(TopType)))
{
TOP30Result TopRSS = pw.GetYandexTop30((TopType)Enum.Parse(typeof(TopType),toptype.ToString()));
Assert.IsNotNull(TopRSS);
Common.dp("Загрузка топа типа " + toptype.ToString() + " завершена, найдено " + TopRSS.channel.tops.Count.ToString() + " постов");
Assert.AreEqual(30, TopRSS.channel.tops.Count);
Common.dp("Ожидание 5 секунд");
Thread.Sleep(5000);
}
}
Скачать класс TOP30Result можно по ссылкеНачиная со среды, 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);
- }