Показаны сообщения с ярлыком Исходники. Показать все сообщения
Показаны сообщения с ярлыком Исходники. Показать все сообщения

среда, 6 февраля 2013 г.

Универсальная глубокая копия объекта.

Часто приходится создавать копию объекта, и каждый раз приходится переписывать весь код для учета специфику объекта. Несколько поразмыслив я нашел полу универсальное решение  проблемы. Почему полу универсальное? Потому что все равно при каждой новой задаче создания копии объекта , приходится учитывать его специфические требования. Так что данное решение хоть и не панацея, но одно из самых простых, оно использует стерилизацию и последующую десерелизацию из памяти.

   1:  
   2: using System.IO;
   3: using 
   4: System.Runtime.Serialization.Formatters.Binary;
   5: namespace Utils.Data
   6: {
   7: public class DeepCopy
   8: {
   9: public static object Clone(object inobject)
  10: {
  11: BinaryFormatter BF = new BinaryFormatter();
  12: MemoryStream memStream = new MemoryStream();
  13: BF.Serialize(memStream, inobject);
  14: memStream.Flush();
  15: memStream.Position = 0;
  16: return BF.Deserialize(memStream);
  17: }
  18: }
  19: }



Не правда ли просто крошечный код):.

Изменение размеренности массива. Redim.

 

Изменение размеренности массива.

   1:  
   2: using System;
   3: namespace Utils.Collections.Array
   4: {
   5:  public class 
   6: arrayExt
   7:  {
   8:  
   9: public static System.Array Redim(System.Array origArray, Int32 
  10: desiredSize)
  11:  
  12: {
  13:  
  14: //Определяем тип элемента 
  15: массива.
  16:  
  17: Type t = 
  18: origArray.GetType().GetElementType();
  19:  
  20: //Создаем новый массив с требуемым числом 
  21: элементов.
  22:  
  23: //Тип массива должен совпадать с типом исходного 
  24: массива.
  25:  
  26: System.Array newArray = System.Array.CreateInstance(t, 
  27: desiredSize);
  28:  
  29: //Копируем элементы из исходного массива в новый 
  30: массив.
  31:  
  32: System.Array.Copy(origArray, 
  33: 0,
  34:  
  35: newArray, 0, Math.Min(origArray.Length, 
  36: desiredSize));
  37:  
  38: //Возвращаем новый 
  39: массив,
  40:  
  41: return newArray;
  42:  
  43: }
  44:  }
  45: }

суббота, 16 апреля 2011 г.

ImageListView – Правильный подход к отображению списка изображений.

ImageListView – NET. компонент, с открытым исходным кодом,  для отображения списка картинок, с асинхронной загрузкой  превю изображений.

Не стандартная работа с консолью.

Парочка методов для не стандартной работы с консолью.

Исходники программы для захвата и сохранения области экрана.

ScreenCapt
Исходник на C#, крошечной программки для снятия скриншотов с области экрана и последующего сохранения в файл.
MyZoomer.zip

Продолжение