• Авторизация


Ещё одна засада в .NET 11-12-2007 18:56


Очень хотел поиметь возможность навесить на несколько внешних классов реализацию собственного интерфейса с помощью наследования от Generic-класса. К сожалению подобный код не компилируется... Эх, а какая красивая мысль была...
    1 public interface IMyInterface
    2 {
    3     void Foo();
    4 }
    5 
    6 public abstract class MyGeneric<T> : T, IMyInterface
    7     where T : class, new()
    8 {
    9     public virtual void Foo()
   10     {
   11         System.Console.WriteLine("Foo");
   12     }
   13 }
   14 
   15 
   16 public class MyClass : MyGeneric<System.Text.StringBuilder>
   17 {
   18 
   19 }
комментарии: 2 понравилось! вверх^ к полной версии
Прошёл Call of Duty 4: Modern Warfare 10-12-2007 16:50


[470x138]
Впечатления двоякие. Стильная картинка и бешенный драйв, но, к сожалению скриптово-тригерные "рельсы" лишают уровни какой-либо вариативности прохождения. Сюжет с гражданской войной в России тоже чушь ещё та...
комментарии: 1 понравилось! вверх^ к полной версии

Багофича в .NET 07-12-2007 19:59


Вот код на С# который скомпилирован не будет
    1 public class C1
    2 {
    3      public virtual object A()
    4      {
    5          return null;
    6      }
    7 }
    8 
    9  public class C2 : C1
   10  {
   11      public override string A()
   12      {
   13          return "foo";
   14      }
   15  }

Вся беда в том что в классе C2 я всего-лишь пытаюсь сузить возвращаемый тип. При этом с точки зрения ООП и правила Лиски всё в порядке. Более того, аналогичный код прекрасно скомпилируется в Java. Абыдна однако... Для 100% аналогии придётся написать что-то вроде:
    1  public class C1
    2  {
    3      public virtual object A()
    4      {
    5          return null;
    6      }
    7  }
    8 
    9  public class C2 : C1
   10  {
   11      public new virtual string A()
   12      {
Читать далее...
комментарии: 2 понравилось! вверх^ к полной версии
Volta technology preview 06-12-2007 18:00


Volta: Web Development Using Only the Materials in the Room
Microsoft представила новую технологию - Volta.
Volta: Web Development Using Only the Materials in the Room
Новая инкарнация WebForms + AJAX. Почитал, впечатляет...
комментарии: 0 понравилось! вверх^ к полной версии
Прошел Хром 06-12-2007 15:13


[340x480]
Лично мне очень даже понравилось...
комментарии: 0 понравилось! вверх^ к полной версии
Я офигеваю, чего надо курить чтобы такое публиковать? 06-12-2007 14:14

Это цитата сообщения Акульи_тапки Оригинальное сообщение

Детская книга про смерть

Этого нам только не хватало... %)
[500x668]
Читать далее...
комментарии: 3 понравилось! вверх^ к полной версии
Копирайтеры наступают 05-12-2007 18:54


Стараниями Анна Лавриновой на многих популярных p2p-ресурсах запрещены релизы продукции фирмы 1С. Пугает сама тенденция, учитывая что формально p2p-ссылки (особенно ословые) это всего навсего MD5-checksum... А что будет если вслед за 1C подтянутся и другие паблишеры?
комментарии: 0 понравилось! вверх^ к полной версии
Те-же самые грабли в виде XAML 04-12-2007 21:24


Оригинальный вариант тут...
<Window
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:sys="clr-namespace:System;assembly=mscorlib"
    Title="Some WPF menu fan ;)"
    SizeToContent="WidthAndHeight"
    >
    <Window.Resources>
        <x:Array x:Key="menuItemsArray" x:Type="sys:Object">
            <MenuItem Header="MenuItem1"/>
            <MenuItem Header="MenuItem2"/>
            <Separator/>
            <MenuItem Header="MenuItem3"/>
        </x:Array>
    </Window.Resources>
    <StackPanel>
        <Menu>
            <MenuItem Header="MainMenu1" 
                ItemsSource="{StaticResource menuItemsArray}"/>
Читать далее...
комментарии: 2 понравилось! вверх^ к полной версии
Ржунемагу... 04-12-2007 17:32


[347x480]
комментарии: 4 понравилось! вверх^ к полной версии
Переход на VS2008 откладывается... 03-12-2007 18:25


Буду ждать новую версию решарпера (обещали в январе)...
Can’t live withoutIn-depth C# code analysis with instant error
and warning highlighting and quick-fixes
комментарии: 0 понравилось! вверх^ к полной версии
И снова подстава в WPF 30-11-2007 21:45


Вот, странное поведение меню при использовании одного и того-же массива пунктов меню...
    1 using System;
    2 using System.Windows;
    3 using System.Windows.Controls;
    4 
    5 public class Demo
    6 {
    7     private static MenuItem setHeader(MenuItem i, object h)
    8     {
    9         i.Header = h;
   10         return i;
   11     }
   12 
   13     [STAThread]
   14     public static void Main()
   15     {
   16         object[] list = new object[21];
   17         for(int i=0;i<list.Length;++i)
   18             list[i] = i%2==0?(object)setHeader(new MenuItem(), "Item №" + (i/2 +1)):(new Separator());
   19 
   20         Window w = new Window();
   21         w.Title = "WPF fan";
   22         w.SizeToContent = SizeToContent.WidthAndHeight;
   23         StackPanel sp = new StackPanel();
   24         Menu m = new Menu();
Читать далее...
комментарии: 2 понравилось! вверх^ к полной версии
Наткнулся на баг компилятора в Orcas Beta 30-11-2007 21:31


В релизе правда уже нет ;) Тем не менее вот код для воспроизведения бага:
    1 using System.Diagnostics;
    2 
    3 namespace dimzon.CompilerTest
    4 {
    5     public interface i1
    6     {
    7         void a();
    8     }
    9 
   10     public class c1: i1
   11     {
   12         public void a()
   13         {
   14             Trace.WriteLine(this + " a()");
   15         }
   16     }
   17 
   18     public class c2: i1
   19     {
   20         public void a()
   21         {
   22             Trace.WriteLine(this + " a()");
   23         }
   24     }
   25 
   26     public abstract class c3
   27     {
   28         private void test_method(string str, i1[] arr, 
Читать далее...
комментарии: 0 понравилось! вверх^ к полной версии
Ученый почти как программист 30-11-2007 15:41


в чем отличие нормального человека от ученого?
[371x698]
комментарии: 0 понравилось! вверх^ к полной версии
Far Cry пройден 30-11-2007 15:38


[470x125]
Постепенно восполняя пробелы в игровой индустрии добрался и до этого шедевра...
комментарии: 0 понравилось! вверх^ к полной версии
Futurama - Bender's Big Score 29-11-2007 19:55


Позавчера официально вышло продолжение такого замечательного сериала как Футурама ;)
Благодаря пиратам и P2P новинка добралась до меня уже сегодня. Как всегда искромётный и циничный юмор, стёб над известными блокбастерами, всё на месте... Хочу ЕЩЁ!!!
[500x500]
комментарии: 3 понравилось! вверх^ к полной версии
Очередная непонятка в WPF 28-11-2007 21:37


Необходимо было прицепить дополнительные данные к MenuItem, я решил создать потомка MenuItem с дополнительными свойствами... Очень удивлён что этот новый класс приводит к изменению внешнего вида разделителя в контекстном меню. Причём в оконнном меню всё пучком... Вот код для воспроизведения глюка:
    1 using System;
    2 using System.Collections.Generic;
    3 using System.Windows;
    4 using System.Windows.Controls;
    5 
    6 public class MyMenuItem: MenuItem
    7 {
    8     private static MenuItem setHeader(MenuItem i, object h)
    9     {
   10         i.Header = h;
   11         return i;
   12     }
   13 
   14     private static List<Control> createItems()
   15     {
   16         List<Control> list = new List<Control>();
   17         list.Add(setHeader(new MenuItem(), "MenuItem 1"));
   18         list.Add(new Separator());
   19         list.Add(setHeader(new MenuItem(), "MenuItem 2"));
   20         list.Add(new Separator());
   21         list.Add(setHeader(new MyMenuItem(), "MyMenuItem"));
   22         list.Add(new Separator());
Читать далее...
комментарии: 0 понравилось! вверх^ к полной версии
Грамотная реализация System.ComponentModel.INotifyPropertyChanged 26-11-2007 20:21


В продолжение темы про PostSharp. Рассмотрим реализацию System.ComponentModel.INotifyPropertyChanged. Это очень полезный интерфейс, особенно для DataBinding. В приведённом коде рассмотрено несколько способов реализации данного интрерфейса и, как результат - выведен базовый класс реализующий INotifyPropertyChanged а также PostSharp-аттрибут...
    1 using System.Collections.Generic;
    2 using System.ComponentModel;
    3 using System.Reflection;
    4 using System;
    5 using PostSharp.Extensibility;
    6 using PostSharp.Laos;
    7 
    8 public class Demo1: INotifyPropertyChanged
    9 {
   10     #region Вспомогательный код, может быть реализован в базовом классе
   11     public event PropertyChangedEventHandler PropertyChanged;
   12     protected void raisePropertyChanged(string propertyName)
   13     {
   14         if(PropertyChanged!=null)
   15             PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
   16     }
   17     protected void raisePropertyChanged(PropertyChangedEventArgs ea)
   18     {
   19         if (PropertyChanged != null)
   20             PropertyChanged(this, ea);
   21     }        
   22     #endregion
Читать далее...
комментарии: 1 понравилось! вверх^ к полной версии
Сабж 26-11-2007 17:11

Это цитата сообщения dohlayakoshka Оригинальное сообщение

РАСПИСАНИЕ КОНЦОВ СВЕТА

2008 — на землю упадет астероид диаметром более 800 м.
2009 — исходя из разшифровок центурий Нострадамуса Питером Лори, в этом году настанет Армагеддон
2010 — Закончится нефть и мир поглотит война за ресурсы. Еще обещают, что Земля отвернется од Солнца. Но это будет временный конец света.
2011 — конец календарного цикла Майя. Достаточно известный конец света, возможно состоится столуновение с астероидом 2005 YU55.
2012 — очень долгожданный конець света. Здесь целый букет — время пятого Солнца, сама солнечная система станет каким то боком к галактической оси, нарушатся все космические циклы, изменение полюсов и т.д. Дети индиго советуют подготовиться, у 0,5% населения есть шанс выжить.
2013 — Рагнарок, он же судний день. День начала и конца! Гиперпространственный переход в четвертое измерение. Для смертных это будет смерть, а для Богов – рождение.
2014 — астрофизики говорят, что к нашей солнечной системе доберется облако космической пыли, которая сметает все на своем пути. Скучный конец света.
2015 — конец какого то 9576–годичного цикла, который приводит к гибели цивилизации.
2016 — Джеймс Хансен, исследователь климатического состояния на Земле, утверждает, что в этом году расстанут ледники и большая часть суши будет затоплена.
2017 — Конец света по теории иерархических катастроф.
2018 — Ядерная война от того же Нострадамуса.
2019 — Банальное столкновение с астероидом 2002 NT7.
2020 — Исаак Ньютон исходя из предсказаний Иоанна Богослова расщитал что конец света будет именно в этом году.
комментарии: 0 понравилось! вверх^ к полной версии
Упрощаем жизнь или PostSharp это наше фсё ;) 23-11-2007 18:40


Есть такой продукт PostSharp , предназначен для трансформации IL-кода на лету. Вот хочу показать жизненный пример использования. В .NET 3.0 (а точнее в WPF) появилось понятие DependencyProperty. Это такие "волшебные" свойства которые, например, могут участвовать в DataBinding, "наследовать" свои значения по иерархии вложенных экземпляров и.т.п. К сожалению добавлять свои DependencyProperty достаточно громоздко и можно легко ошибится, посмотрите пример ClassicImplementation (строки 10-37). С использованием PostSharp все стало значительно компактнее и прозрачнее, смотрите NewImplementation (строки 39-57).

Ну и основное "волшебство" заключено в классе DependencyPropertyAttribute который подменяет реализацию геттеров/сеттеров свойств ;) (строки 61-226)

    1 using System;
    2 using System.Collections.Generic;
    3 using System.Reflection;
    4 using System.Windows;
    5 using PostSharp.Extensibility;
    6 using PostSharp.Laos;
    7 
    8 namespace PostSharpDemo
    9 {
   10     /// <summary>
   11     /// Классическая реализация 2-х свойств
   12     /// </summary>
   13     public class ClassicImplementation: DependencyObject
   14     {
   15         public static readonly DependencyProperty DemoStringProperty =
   16             DependencyProperty.Register(
   17                 "DemoString",
   18                 typeof (string), typeof (ClassicImplementation),
   19                 new 
Читать далее...
комментарии: 3 понравилось! вверх^ к полной версии
Улыбнуло 21-11-2007 16:34


Прислали по почте картинку
[525x700]
комментарии: 2 понравилось! вверх^ к полной версии