Archiwum

Archiwum autora

[C#] Konfiguracja Unity i XamlParseException

26 marca 2012 2 Komentarze

Niedawno pierwszy raz użyłem microsoftowego kontenera Unity do wstrzykiwania zależności w mojej aplikacji WPF opartej o wzorzec MVVM.  Zagadnienie dependency injection przystępnie przybliżył mi cykl artykułów na xoft.pl , a samo Unity zostało bardzo zrozumiale opisane na mtaulty.com . Bez  problemów napisałem kod, który w codebehind widoku tworzy kontener, rejestruje potrzebne implementacje interfejsów używanych w ViewModelu i ustawia DataContext na uzyskany z kontenera obiekt ViewModel.

IUnityContainer uc = new UnityContainer();
uc.RegisterType(typeof(IMojTyp1), typeof(MojTyp1));
uc.RegisterType(typeof(IMojTyp2), typeof(MojTyp2));
uc.RegisterType(typeof(IMojTyp3), typeof(MojTyp3));
uc.RegisterType(typeof(IMojTyp4), typeof(MojTyp4));
this.DataContext = uc.Resolve<MainViewModel>();

Następnie postanowiłem przenieść rejestrację typów do pliku konfiguracyjnego App.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration"/>
  </configSections>
  <unity xmlns="http://schemas.microsoft.com/practices/2010/unity">
    <container>
      <register type="MojNamespace.IMojTyp1, MojAssembly"
                mapTo="MojNamespace.MojTyp1, MojAssembly"/>
      <register type="MojNamespace.IMojTyp2, MojAssembly"
            mapTo="MojNamespace.MojTyp2, MojAssembly"/>
      <register type="MojNamespace.IMojTyp3, MojAssembly"
            mapTo="MojNamespace.MojTyp3, MojAssembly"/>
      <register type="MojNamespace.IMojTyp4, MojAssembly"
            mapTo="MojNamespace.MojTyp4, MojAssembly"/>
    </container>
  </unity>
</configuration>

Teoretycznie wiedziałem jak to zrobić , ale praktyka okazała się jak zwykle bezlitosna: zażądała ofiary z czasu i ukorzenia się przed bezwzględnymi Exceptionami. Nie chciałem się poddać.  Zaatakowany przez drapieżne wyjątki użyłem najbardziej śmiercionośnej broni w całym IT, czyli google.

Czytaj dalej…

Reklamy
Kategorie:Przykłady Tagi: , , , ,

Sudencka Konferencja Naukowa „BZIK” AGH

29 lutego 2012 Dodaj komentarz

plakat BZIK AGH

9 – 11 marca odbędzie się Sudencka Konferencja Naukowa „BZIK” organizwana przez KN „MENTOR” na Wydziale Zarządzania AGH

W programie aż 31 profesjonalnych warsztatów, głównie z dziedziny programowania i zarządzania projektami.

Więcej informacji na stronie: www.bzik.biz

Kategorie:Wydarzenia Tagi: , ,

[C#] Najszybsza metoda zliczania linii w stringu

26 lutego 2012 2 Komentarze

Trafiłem dzisiaj na ciekawy artykuł, którego autor testuje szybkość wykonania różnych metod mających na celu zwrócenie ilości linii zawartych w zmiennej typu string.

Użyte zostały m.in. wyrażenia regularne

static Regex r = new Regex("\n", RegexOptions.Multiline);
static long LinesCountRegex(string s)
{
     MatchCollection mc = r.Matches(s);
     return mc.Count;
}

LINQ

static long LinesCountLinq(string s)
{
      return (from ch in s
              where ch == '\n'
              select ch).Count();
}

static long LinesCountLinqCount(string s)
{
       return s.Count(c => (c == '\n'));
}

wskaźniki

unsafe static long LinesCountUnsafePtr(string s)
{
       long lineCount = 1;
       fixed (char* pchar = s)
       {
             char* p = pchar;
             for (; *p != '\0'; p++)
             {
                  if (*p == '\n') lineCount++;
             }
        }
        return lineCount;
}

ale najszybsze rozwiązanie okazało się nie być związane z żadną wyszukaną techniką.

static long LinesCount4(string s)
{
     long count = 0;
     int position = -1;
     while ((position = s.IndexOf('\n', position + 1)) != -1)
     {
         count++;
     }
     return count;
}
Kategorie:Przykłady Tagi: , , , ,

Niesamowita historia zdeterminowanego developera

29 listopada 2011 Dodaj komentarz

Znalazłem ostatnio na stackoverflow.com  link do inspirującego video z Google TechTalks:

Google TechTalks August 1, 2006 Ron Avitzur ABSTRACT It’s midnight. I’ve been working sixteen hours a day, seven days a week. I’m not being paid. In fact, my project was canceled six months ago, so I’m evading security, sneaking into Apple Computer’s main offices in the heart of Silicon Valley, doing clandestine volunteer work for an eight-billion-dollar corporation. For more info visit: http://www.pacifict.com/Story

[C#] Interfejsy – z czym to się je?

25 listopada 2011 6 Komentarzy

Podstawy

Jak najszybciej/najprościej wytłumaczyć czym jest interfejs? Interfejs, to taka jakby klasa, która deklaruje swoje składowe (głównie metody), ale ich nie implementuje, tzn. interfejs zawiera nazwę metody, ale nie posiada jej ciała z kodem. Nie można utworzyć obiektu, który będzie instancją jakiegoś interfejsu, ale interfejs może być zaimplementowany przez klasę. Jeśli klasa implementuje interfejs to znaczy, że zapewnia implementację wszystkich członków interfejsu, tzn. interfejs mówi klasie, że klasa musi posiadać określone metody, właściwości itd. Interfejs informuje jakich zachowań (implementacji jakich metod) będziemy oczekiwać od klasy. Klasa może implementować wiele interfejsów naraz. Koniec bełkotu, przejdźmy do przykładu 🙂

using System;

namespace InterfaceTest
{
	interface IKucharz
	{
		void Gotowanie();
	}

	class TypOsoby1:IKucharz
	{
		int Id {get;set;}
		string Imie {get;set;}

		public TypOsoby1(int id, string imie)
		{
			this.Id=id;
			this.Imie=imie;
		}

		public void Gotowanie()
		{
			Console.WriteLine (this.ToString()+" gotuje...");
		}

		public override string ToString()
		{
			return string.Format ("{1}",this.Id,this.Imie);
		}
	}

	class MainClass
	{
		public static void Main (string[] args)
		{
			TypOsoby1 adam = new TypOsoby1(1,"Adam");
			adam.Gotowanie();
		}
	}
}

Czytaj dalej…

Kategorie:Przykłady Tagi: , ,

Jak usunąć MS Office, który nie chce się odinstalować?

25 października 2011 Dodaj komentarz

Nie mogłem już znieść procedury odpalenia Worda, która polegała na kliknięciu w ikonkę, zobaczeniu okienka z komunikatem „trwa przygotowanie do instalacji…” czy coś w ten deseń, kliknięciu „anuluj”, braku odpowiedzi od okienka, uruchomieniu menadżera zadań i wymuszeniu zamknięcia wisielca, ponownym kliknięciu w ikonkę, po którym Word był już gotowy do pracy. Nie wiem który z moich nieprzemyślanych i nieodpowiedzialnych eksperymentów spowodował tak dziwne zachowanie u mego biurowego przyjaciela, ale wiem że miałem już tego dość. Reinstalacja wisiała w powietrzu. Zasiadłem przed panelem sterowania, wybrałem odpowiednią pozycję z listy zainstalownych programów i kliknąłem „odinstaluj”… Czytaj dalej…

Kategorie:Kazanie Tagi:

Kazania dla młodych programistów

19 października 2011 1 komentarz
Kategorie:Kazanie