<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress.com" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>ioc &amp;laquo; WordPress.com Tag Feed</title>
	<link>http://en.wordpress.com/tag/ioc/</link>
	<description>Feed of posts on WordPress.com tagged "ioc"</description>
	<pubDate>Sun, 29 Nov 2009 20:08:12 +0000</pubDate>

	<generator>http://en.wordpress.com/tags/</generator>
	<language>en</language>

<item>
<title><![CDATA[tot ce trebuie să ştii despre html 5]]></title>
<link>http://malidali.wordpress.com/2009/11/27/tot-ce-trebuie-sa-stii-despre-html-5/</link>
<pubDate>Fri, 27 Nov 2009 11:11:27 +0000</pubDate>
<dc:creator>ag0rex</dc:creator>
<guid>http://malidali.wordpress.com/2009/11/27/tot-ce-trebuie-sa-stii-despre-html-5/</guid>
<description><![CDATA[HTML5, a cincea încarnare a limbajului de marcare folosit peste tot pe Internet, este în curs de red]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>HTML5, a cincea încarnare a <a title="Limbaj de marcare" href="http://ro.wikipedia.org/wiki/Limbaj_de_marcare">limbajului de marcare</a> folosit peste tot pe Internet, este în curs de redactare. În acest articol vom parcurge toate schimbarile din HTML5, precum şi noile taguri care vor fi implementate.</p>
<p><!--more--></p>
<p><strong>Tag-uri multimedia</strong></p>
<p>HTML5 vine cu un nou set de tag-uri pentru desenat, audio şi video. Aceste tag-uri au fost adăugate pe de o parte pentru a face navigarea pe Internet o experienţă mai plăcută, şi pe de altă parte pentru a standardiza modul în care informaţia este afişată pe Internet.</p>
<p>Tag-ul <em>canvas</em> face uşor desenatul pe ecran de dreptunghiuri, ceruri sau linii. Există de asemenea şi un set limitat de efecte cum ar fi contur sau umbră. Pentru a permite utilizatorului să deseneze, HTML5 va folosi JavaScript. Aşadar, pentru a folosi <em>canvas</em>, ai nevoie de două lucruri: de un tag <em>canvas</em> pentru a crea suprafaţa pe care se va desena, şi de JavaScript pentru a face desenarea propriu-zisă.</p>
<p>Tag-ul <em>audio</em> este folosit pentru a standardiza modul în care ascultăm muzică pe net. Seamănă foarte mult cu actualul tag <em>embed</em>, dar fiind că include un atribut <em>src</em>, precum şi alte opţiuni specifice unui conţinut audio.</p>
<p>Tag-ul <em>video</em> seamănă destul de mult cu cel <em>audio</em>, are atribute precum <em>loop</em> sau <em>autoplay</em>, precum şi o descriere a filmului în cauză pentru utilizatori cu deficienţe de vedere (poate chiar subtitrarea filmului).</p>
<p><strong>Tag-uri structurale</strong></p>
<p>În HTML5, o parte a unei pagini web va fi numită secţiune şi va fi reprezentată de un tag numit <em>section</em>. Aceasta poate fi o secţiune de text, un capitol al unei cărţi sau o suprafaţă generică a unui site web.</p>
<p>Tag-ul <em>header</em> reprezintă antetul paginii web. De obicei, antetul unei pagini web conţine o siglă.</p>
<p>Tag-ul <em>footer</em> reprezintă subsolul paginii. Este folosit în mod curent pentru a afişa informaţii legate de drepturi de copiere, legături către arhivă sau chiar un alt meniu.</p>
<p>Tag-ul <em>nav</em> este folosit pentru a cuprinde meniul sau alte elemente de navigare către alte pagini.</p>
<p>Alte tag-uri structurale: <em>article</em> &#8211; reprezintă articole, <em>figure</em> &#8211; diagrame.</p>
<p><strong>Tag-uri inline</strong></p>
<p>Aşa cum se folosesc în prezent tag-uri ca <em>em</em> sau <em>strong</em>, pentru a marca anumite porţiuni din text se vor introduce <em>mark</em> sau <em>time</em>.</p>
<p>Tag-ul <em>meter</em> este folosit pentru a reprezenta un număr cu o anumită formatare (cum ar fi o bară pentru măsurarea progresului). El are atribute cum ar fi: <em>min</em>, <em>max</em>, <em>low</em>, <em>high</em>, <em>optimum</em>, <em>value</em>, <em>max</em>.</p>
<p><strong>Câmpuri noi pentru formulare</strong></p>
<p>HTML5 vine şi cu un nou set de câmpuri pentru formulare. Acest lucru este benefic datorită faptului că anumite câmpuri, cum ar fi e-mail-ul sau adresa web, sunt prezente aproape oriunde în Internet. Acestea sunt:</p>
<ul>
<li><em>datetime</em></li>
<li><em>datetime-local</em></li>
<li><em>date</em></li>
<li><em>month</em></li>
<li><em>week</em></li>
<li><em>time</em></li>
<li><em>number</em></li>
<li><em>range</em></li>
<li><em>email</em></li>
<li><em>url</em></li>
</ul>
<p><strong>Tag-uri învechite</strong></p>
<p>Există şi tag-uri din versiunile anterioare ale HTML care nu vor mai fi folosite în HTML5:</p>
<ul>
<li><em>acronym</em></li>
<li><em>applet</em></li>
<li><em>basefont</em></li>
<li><em>big</em></li>
<li><em>center</em></li>
<li><em>dir</em></li>
<li><em>font</em></li>
<li><em>frame</em></li>
<li><em>frameset</em></li>
<li><em>isindex</em></li>
<li><em>noframes</em></li>
<li><em>noscript</em></li>
<li><em>s</em></li>
<li><em>strike</em></li>
<li><em>tt</em></li>
<li><em>u</em></li>
</ul>
<p><strong>Tag-uri interactive</strong></p>
<p>Tag-ul <em>details</em> poate fi folosit pentru a arăta informaţii suplimentare pentru utilizator, cum ar fi o lămurire sau o explicaţie. Există şi atributul opţional <em>show</em> pentru a determina dacă utilizatorul ar trebui să vadă acel lucru implicit sau nu.</p>
<p>Un <em>datagrid </em>se aseamănă cu un tabel, dar este proiectat pentru a fi folosit interactiv, de exemplu permite selectarea de rânduri sau, în general, editarea datelor.</p>
<p>Un <em>menu </em>a fost o dată un element învechit, dar acum este prezent din nou în HTML5. Acesta ar trebui să fie utilizat pentru a crea un meniu contextual de soiuri, şi nu pentru meniul de navigare.</p>
<p><strong>Alte schimbări</strong></p>
<p>O altă schimbare în HTML5 o reprezintă <em>doctype</em>-ul, care va fi <em>&#60;!DOCTYPE HTML&#62;</em>.</p>
<p>Despre modificarea atributului <em>href</em> poţi citi la <a title="un articol despre legături peste blocuri" href="http://html5doctor.com/block-level-links-in-html-5/" target="_self">http://html5doctor.com/block-level-links-in-html-5/</a> sau la <a title="articolul după care a fost scris acest post" href="http://programmersvoice.com/general/all-you-need-to-know-about-html5" target="_self">http://programmersvoice.com/general/all-you-need-to-know-about-html5</a>.</p>
<p>Ultimul dintre link-uri a fost folosit de asemenea pentru a scrie acest articol, care reprezintă de fapt traducerea în română a articolului pe de programmersvoice.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Aspect Oriented Programming dengan Spring AspectJ Part I]]></title>
<link>http://krissadewo.wordpress.com/2009/11/27/aspect-oriented-programming-dengan-spring-aspectj-part-i/</link>
<pubDate>Fri, 27 Nov 2009 05:36:16 +0000</pubDate>
<dc:creator>krissadewo</dc:creator>
<guid>http://krissadewo.wordpress.com/2009/11/27/aspect-oriented-programming-dengan-spring-aspectj-part-i/</guid>
<description><![CDATA[Dalam artikel terdahulu saya telah memberikan beberapa contoh penggunaan metodologi AOP dengan mengg]]></description>
<content:encoded><![CDATA[Dalam artikel terdahulu saya telah memberikan beberapa contoh penggunaan metodologi AOP dengan mengg]]></content:encoded>
</item>
<item>
<title><![CDATA[prezentare etapa 3]]></title>
<link>http://malidali.wordpress.com/2009/11/26/prezentare-etapa-3/</link>
<pubDate>Thu, 26 Nov 2009 14:01:23 +0000</pubDate>
<dc:creator>ag0rex</dc:creator>
<guid>http://malidali.wordpress.com/2009/11/26/prezentare-etapa-3/</guid>
<description><![CDATA[Prezentarea se găsește aici.]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Prezentarea se găsește <a title="mali-dali prezentare etapa 3" href="http://www.2shared.com/file/9461014/c6b5f7f/mali-dali-etapa-3.html" target="_self">aici</a>.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[opțiuni tehnice alese]]></title>
<link>http://malidali.wordpress.com/2009/11/26/optiuni-tehnice-alese/</link>
<pubDate>Thu, 26 Nov 2009 13:13:22 +0000</pubDate>
<dc:creator>ag0rex</dc:creator>
<guid>http://malidali.wordpress.com/2009/11/26/optiuni-tehnice-alese/</guid>
<description><![CDATA[Am decis să folosim pentru realizarea site-ului nostru: PHP5 &#8211; am ales PHP5 pentru că este un ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Am decis să folosim pentru realizarea site-ului nostru:</p>
<ul>
<li>PHP5 &#8211; am ales PHP5 pentru că este un limbaj de server side scripting foarte popular, cu o comunitate de utilizatori foarte mare (poate cea mai mare).</li>
<li>MySQL &#8211; unul dintre cele mai populare servere pentru baze de date.</li>
<li>CodeIgniter &#8211; după ce am studiat mai multe framework-uri pentru PHP, am decis să folosim CodeIgniter datorită ușurinței în utilizare, facilităților și documentației foarte bogate.</li>
<li>DataMapper &#8211; CodeIgniter nu are un ORM integrat, de aceea vom folosi DataMapper pentru a mapa tabelele din baza de date ca obiecte.</li>
</ul>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[cuvinte cheie]]></title>
<link>http://malidali.wordpress.com/2009/11/26/cuvinte-cheie/</link>
<pubDate>Thu, 26 Nov 2009 12:49:30 +0000</pubDate>
<dc:creator>ag0rex</dc:creator>
<guid>http://malidali.wordpress.com/2009/11/26/cuvinte-cheie/</guid>
<description><![CDATA[În această săptămână a trebuit să ne alegem ce cuvinte cheie sunt edificatoare pentru site-ul nostru]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>În această săptămână a trebuit să ne alegem ce cuvinte cheie sunt edificatoare pentru site-ul nostru. În continuare vom prezenta alegerile făcute.</p>
<p><!--more--></p>
<p>După ce ne-am sfătuit puțin și am <em>studiat piata</em>, am decis să alegem trei cuvinte cheie: <em>fotbal de treaba</em>, <em>fotbal video</em> și <em>fotbal comunitate</em>. Am ales aceste cuvinte pentru că sunt relevante pentru ceea ce facem noi, iar Google nu returnează rezultate satisfăcătoare pentru aceste cuvinte cheie.</p>
<p><a href="http://img4.imageshack.us/i/cheiefotbaltreaba.jpg/" target="_blank"><img src="http://img4.imageshack.us/img4/3374/cheiefotbaltreaba.th.jpg" alt="" /></a></p>
<p>La <em>fotbal de treaba</em> ne asteptăm să fim găsiți ușor (printre primele 5 rezultate), deoarece este titlul site-ului.</p>
<p><a href="http://img682.imageshack.us/i/cheiefotbalvideo.jpg/" target="_blank"><img src="http://img682.imageshack.us/img682/1253/cheiefotbalvideo.th.jpg" alt="" /></a></p>
<p>Pentru <em>fotbal video</em>, am decis pentru început să căutăm doar în site-urile din România. Dorim de asemenea să ne clasăm între primele rezultate (top 100) pentru acest tip de căutare.</p>
<p><a href="http://img268.imageshack.us/i/fotbalcomunitate.jpg/" target="_blank"><img src="http://img268.imageshack.us/img268/6238/fotbalcomunitate.th.jpg" alt="" /></a></p>
<p>Pentru <em>fotbal comunitate</em>, poate cel mai reprezentativ cuvânt cheie pentru site-ul nostru, rezultatele găsite pe Google sunt cel puțin amuzante (al doilea rezultat este o secțiune destinată fotbalului dintr-un forum pentru motocicliști). Pentru această căutare am prefera să fim între primele 5 rezultate.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Ayinesi iştir kişinin lafa bakılmaz]]></title>
<link>http://kafatopu.wordpress.com/2009/11/25/ayinesi-istir-kisinin-lafa-bakilmaz/</link>
<pubDate>Wed, 25 Nov 2009 14:49:16 +0000</pubDate>
<dc:creator>tahtabacak</dc:creator>
<guid>http://kafatopu.wordpress.com/2009/11/25/ayinesi-istir-kisinin-lafa-bakilmaz/</guid>
<description><![CDATA[J. A. Samaranch Laf: &#8221;Sporu kullanmamalı, ona hizmet etmeliyiz&#8221; İş: Başkanlığı döneminde]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><img class="alignleft" src="http://discovermagazine.com/2008/aug/28-the-science-of-sniffing-out-liars/liar.jpg" alt="" width="287" height="219" /></p>
<p style="text-align:left;"><strong><strong>J. A. Samaranch</strong></strong></p>
<p style="text-align:left;"><strong>Laf:</strong> &#8221;Sporu kullanmamalı, ona hizmet etmeliyiz&#8221;</p>
<p style="text-align:left;"><strong>İş:</strong> Başkanlığı döneminde Lozan&#8217;daki The Palace Hotel&#8217;in başkanlık süitinde kalması IOC&#8217;ye yıllık $500,000&#8242;a mal oluyordu. (Sports Illustrated haberi)</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Sign the petition to keep the Pursuit in the Olympics]]></title>
<link>http://sweatngears.wordpress.com/2009/11/25/sign-the-petition-to-keep-the-pursuit-in-the-olympics/</link>
<pubDate>Wed, 25 Nov 2009 13:00:37 +0000</pubDate>
<dc:creator>Craig</dc:creator>
<guid>http://sweatngears.wordpress.com/2009/11/25/sign-the-petition-to-keep-the-pursuit-in-the-olympics/</guid>
<description><![CDATA[The Pursuit Early yesterday afternoon, Lance Armstrong posted twitter link to a story on Velo News t]]></description>
<content:encoded><![CDATA[The Pursuit Early yesterday afternoon, Lance Armstrong posted twitter link to a story on Velo News t]]></content:encoded>
</item>
<item>
<title><![CDATA[Suplementos como aminoácidos, creatina e cafeína melhoram o desempenho de esportistas?]]></title>
<link>http://queroviverbem.wordpress.com/2009/11/25/suplementos-como-aminoacidos-creatina-e-cafeina-melhoram-o-desempenho-de-esportistas/</link>
<pubDate>Wed, 25 Nov 2009 12:59:21 +0000</pubDate>
<dc:creator>queroviverbem</dc:creator>
<guid>http://queroviverbem.wordpress.com/2009/11/25/suplementos-como-aminoacidos-creatina-e-cafeina-melhoram-o-desempenho-de-esportistas/</guid>
<description><![CDATA[Muitos atletas tomam suplementos à base de aminoácidos, creatina ou cafeína, visando melhorar a sua ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><strong><a href="http://queroviverbem.wordpress.com/files/2009/11/fitness.jpg"><img class="size-full wp-image-13 alignleft" title="Fitness Portal Quero Viver Bem" src="http://queroviverbem.wordpress.com/files/2009/11/fitness.jpg" alt="" width="161" height="142" /></a></strong></p>
<p>Muitos atletas tomam suplementos à base de aminoácidos, creatina ou cafeína, visando melhorar a sua performance.  Mas afinal de contas, estes suplementos realmente funcionam?</p>
<p><strong>Aminoácidos</strong></p>
<p>Os suplementos com aminoácidos não têm demonstrado benefícios positivos no desempenho dos atletas. Embora o requerimento diário de proteínas da dieta dos atletas seja maior, uma dieta típica destes esportistas costuma ter um percentual maior de proteínas, não havendo a necessidade de suplementação específica.</p>
<p>Em estudos clínicos, o tempo de exaustão muscular não aumentou com a suplementação de aminoácidos, não havendo também melhoria no desempenho dos praticantes de maratona. Além disso, suplementos compostos de aminoácidos podem causar efeitos gastrointestinais, tais como diarreia e cólicas abdominais. A suplementação de aminoácidos não é proibida pelas agências ligadas aos esportes, como o International Olympic Committee (IOC) e a National Collegiate Athletic Association (NCAA).</p>
<p><strong>Creatina</strong></p>
<p>A melhoria no desempenho esportivo com o uso de creatina tem sido demonstrada em alguns contextos. Em uma análise de 16 estudos controlados, a suplementação de creatina aumentou a capacidade do levantamento de peso em homens jovens, no entanto, o mesmo não foi observado em mulheres ou em idosos.</p>
<p>O desempenho de corredores ou nadadores parece não ser afetado positivamente com o uso da creatina. A creatina pode acarretar um aumento de peso em pouco tempo, por motivar um incremento na composição da água corporal total. Estudos com usuários de longo prazo (um ano ou mais) demonstraram maior tendência ao edema nas pernas, mas sem efeitos gastrointestinais relevantes ou uma piora da função renal. A segurança do uso da creatina em idosos ou portadores de doença renal não está comprovada.</p>
<p><strong>Cafeína</strong></p>
<p>A cafeína é um estimulante capaz de aumentar o desempenho físico de corredores e ciclistas, de acordo com o resultado de alguns estudos. Os efeitos adversos da cafeína são a ansiedade, a dependência física e os efeitos neurológicos com a interrupção de seu uso. Embora o International Olympic Committee (IOC) proíba concentrações urinárias de cafeína acima de 12 mcg por ml, a National Collegiate Athletic Association (NCAA) permite concentrações de até 15 mcg por ml.</p>
<p>Fonte: American Family Physician.<br />
Texto revisado por Nícia Padilha.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Samaranch ve KGB]]></title>
<link>http://kafatopu.wordpress.com/2009/11/25/samaranch-ve-kgb/</link>
<pubDate>Tue, 24 Nov 2009 21:08:26 +0000</pubDate>
<dc:creator>tahtabacak</dc:creator>
<guid>http://kafatopu.wordpress.com/2009/11/25/samaranch-ve-kgb/</guid>
<description><![CDATA[Rus tarihçi Yuri Felshtinsky ve KGB&#8217;de görev yapmış eski Korgeneral Vladimir Popov’un yeni kit]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><a href="http://kafatopu.wordpress.com/files/2009/11/kgbplayschesscover.jpg"><img class="alignleft size-full wp-image-271" title="KGBplaysChessCover" src="http://kafatopu.wordpress.com/files/2009/11/kgbplayschesscover.jpg" alt="" width="200" height="310" /></a></p>
<p>Rus tarihçi Yuri Felshtinsky ve KGB&#8217;de görev yapmış eski Korgeneral Vladimir Popov’un yeni kitabı “KGB Satranç Oynar” da 1980 – 2001 yıllarında IOC başkanlığı yapmış olan Juan Antonio Samaranch’in KGB ajanı olduğunu belirtiyor. Hatta Samaranch’in örgüt içinde spor generali olarak anıldığı iddia ediliyor.</p>
<p>Samaranch ile KGB irtibatının 1977 yılında Franco tarafından büyükelçi olarak Moskova’ya gönderilmesiyle geliştiği ve 3 yıl sonra Samaranch’a IOC başkanlığı yolunda destek sağladığı belirtiliyor. Andrew Jennings’in kitaplarında adlarını sıkça duyduğumuz Fransız gizli servisi ajanı André Guelfi, adidas’in kurucusu Horst Dassler ve kurduğu underground spor-politik ekibinin seçimin kazanılmasında aktif rol aldıkları da yine iddialar arasında.</p>
<p>İddialar Sochi 2014 adaylık ve seçim sürecine kadar uzanıyor.</p>
<p>Bu gibi haberler geldikçe taşlar da yavaş yavaş yerine oturuyor…</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[MEF in MVVM]]></title>
<link>http://maonet.wordpress.com/2009/11/24/mef-in-mvvm-with-wcf/</link>
<pubDate>Tue, 24 Nov 2009 18:24:24 +0000</pubDate>
<dc:creator>Frank Mao</dc:creator>
<guid>http://maonet.wordpress.com/2009/11/24/mef-in-mvvm-with-wcf/</guid>
<description><![CDATA[I read a post about MEF vs. IOC which cleared the confusion: MEF should be used external of app, whi]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>I read a post about <a href="http://mef.codeplex.com/">MEF</a> vs. IOC which cleared the confusion: MEF should be used external of app, while IOC should be used internally.</p>
<p>Good point. I have been struggling with how to separate my view and view model correctly in WPF app for a long time.   In fact Bil Simer already suggested that MEF is perfect fit in MVVM/Presentation Model last year during the Edmonton Code Camp 2008.</p>
<p>Ideally, all view models can be compiled into a separated assembly and put into specific folder to be imported by UI views!</p>
<p>Some code changes during my code conversion include:</p>
<ul>
<li>Remove ctor args from view model, I haven&#8217;t figure out how to feed ctor args when MEF importing. This is not easy as auto-wiring in IOC. I ended up with a separate initialize method in each view model, which is not too bad, because I have to call wireUpViewModel from view anyway, this Initialize method has a perfect place to put.</li>
<li>I&#8217;m still not sure where should I put Container.Compose() method, because this method needs the instance the object to be imported into, I think compose as needed is better for WPF app.</li>
<li>Shared mode is the default behavior for export and import, it messed up my event handling code, (true, I didn&#8217;t do -= before +=). I had to explicitly add this everywhere.</li>
</ul>
<blockquote>
<pre>[Export]
[PartCreationPolicy(CreationPolicy.NonShared)]
or
[Import(typeof(NewRequestTypeViewModel), RequiredCreationPolicy = CreationPolicy.NonShared)]</pre>
</blockquote>
<p>Code:</p>
<pre class="brush: csharp;">
    public partial class TemplateEditShell : Window{

        private CompositionContainer _mefContainer;

        public TemplateEditShell()
        {
            InitializeComponent();
            InitialzieMEF();
        }

        private void InitialzieMEF()
        {
            var catalog = new AssemblyCatalog(System.Reflection.Assembly.GetExecutingAssembly());
            _mefContainer = new CompositionContainer(catalog);
        }

        private void btnEditItemList_Click(object sender, RoutedEventArgs e)
        {
            var proxy = ObjectFactory.GetInstance&#60;IRequestManagementAdminService&#62;();
            var view = new EditRequestTypeItemListView(_viewModel.SelectedRequestType, proxy);
            _mefContainer.ComposeParts(view);
            view.WireUpViewModel();
            view.ShowDialog();
        }
  }

    public partial class EditRequestTypeItemListView : Window
    {
        private readonly RequestTypeDto _requestTypeDto;
        private readonly IRequestManagementAdminService _proxy;

        [Import]
        public IEditRequestTypeItemListViewModel EditRequestTypeItemListViewModel { get; set; }

        public EditRequestTypeItemListView(RequestTypeDto requestTypeDto, IRequestManagementAdminservice proxy)
        {
            _requestTypeDto = requestTypeDto;
            _proxy = proxy;
            InitializeComponent();

            // Can't wire up in ctor, coz MEF import hasn't start/finish yet.
//            WireUpViewModel();
        }

        public void WireUpViewModel()
        {
            DataContext = EditRequestTypeItemListViewModel;

            EditRequestTypeItemListViewModel.Initialize(_proxy, _requestTypeDto);

            EditRequestTypeItemListViewModel.RequestShowMessage += (o, arg) =&#62; MessageBox.Show(arg.EventData);

        }
    }

    [Export(typeof(IEditRequestTypeItemListViewModel))]
    public class EditRequestTypeItemListViewModel : ViewModelBase, IEditRequestTypeItemListViewModel
    {
        private IRequestManagementAdminContract _proxy;
        private RequestTypeDto _currentRequestType;

        public RequestTypeItemDto SelectedRequestTypeItem { get; set; }

        public ObservableCollection ItemList { get; set; }

        public EditRequestTypeItemListViewModel()
        {
        }

        public void Initialize(IRequestManagementAdminContract proxy, RequestTypeDto currentRequestType)
        {
            _proxy = proxy;
            _currentRequestType = currentRequestType;

            ItemList = new ObservableCollection(proxy.FindAllRequestTypeItems(currentRequestType.Id));

            SelectedRequestTypeItem = ItemList.FirstOrDefault();
        }
  }
</pre>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Mastering Isle of Conquest - Revisited]]></title>
<link>http://outdps.com/2009/11/23/mastering-isle-of-conquest-revisited/</link>
<pubDate>Mon, 23 Nov 2009 14:42:35 +0000</pubDate>
<dc:creator>jurgwena</dc:creator>
<guid>http://outdps.com/2009/11/23/mastering-isle-of-conquest-revisited/</guid>
<description><![CDATA[Hey all, today we&#8217;re going to revisit Isle of Conquest guide, because my old guide was written]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Hey all, today we&#8217;re going to revisit Isle of Conquest guide, because my <a href="http://outdps.com/2009/08/07/overview-of-the-isle-of-conquest/" target="_blank">old guide</a> was written the same week the BG came out, and I didn&#8217;t have as much info then as I do now. Let&#8217;s see what&#8217;s what now that I have a little more perspective.<!--more--></p>
<p>As we should all know by now, IoC is won by defeating the opposing team&#8217;s general or running them totally out of resources. The latter method of winning is almost impossible and should never be attempted. If one were forced to attempt this by mysterious and unimaginable forces, I would suggest capping the oil refinery and quarry and trying to defend them, because they act like the mines do in Alterac Valley and award resources to whichever team controls them. These 2 nodes have a much more important function, and that is increasing the siege damage you do. Even if one is trying to win by the standard method of breaking down a wall and killing the general, I wouldn&#8217;t expend too much effort in capping these nodes. Checking to see if one of them is undefended and capping it over if it is would the most I would do. This isn&#8217;t to say they aren&#8217;t useful, it&#8217;s just that there&#8217;s more useful things you can do (see below).</p>
<p>The other 3 nodes all help you break down the opposing team&#8217;s wall more directly. The dock and workshop give you vehicles. The dock&#8217;s vehicles are much better, so you should try to cap the dock at all costs. If you fail to capture the dock, then wait till the other team captures it and suicide attack their <a href="http://www.wowhead.com/?npc=34802" target="_blank">glaive throwers</a> until they have none left. Then try to recap the dock and use your glaives on their wall. Please don&#8217;t touch the glaive if you&#8217;ve never done it before, as you will drastically reduce your team&#8217;s chance of winning. Simply hop in a catapult and send yourself into the enemy keep and grab bombs from the pile to sabotage the keep&#8217;s defenses from the inside. If you think you can handle the glaive thrower, then get in one and start shooting down the west wall of whichever keep you&#8217;re trying to get into. Be aware that the glaives have huge range and you should take the time to position them in a place that is as far from the enemy keep as possible. You should also try and put your glaive in a place where it can&#8217;t be attacked by people who are hiding behind a hill or under a bridge and shooting through the terrain. The glaives have very low hp so all this effort is crucial to your success. Try to encourage your teammates to defend the glaives once you have them.</p>
<p>Now, the workshop is useless because the dock&#8217;s vehicles are way better, but how about the hangar? The fact is that by using the hangar to get your <em>entire</em> team into the enemy keep at the start of the fight, you can bring down a wall faster than you would using any other means. However, this requires a lot of coordination and so I wouldn&#8217;t bother with this strat unless you have an organized group. Also, controlling at least one of the 2 nodes that enhance your team&#8217;s siege damage would be useful if you really wanted to pull this off. Unless you are in a team that is group queuing this BG, I would never ever ever bother with the hangar, as it is a complete waste of time in a pug.</p>
<p>If you like to defend, then you can hop in the turrets that line the ramparts of each keep. Trying to kill these turrets is futile because any friendly player can make a turret respawn with full hp instantly simply by right-clicking it.</p>
<p>That re-sums up Isle of Conquest!</p>
<p>-Jurgwena</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Prototyping 2]]></title>
<link>http://centralmallro.wordpress.com/2009/11/23/prototyping-2/</link>
<pubDate>Mon, 23 Nov 2009 00:34:39 +0000</pubDate>
<dc:creator>mihaidumitrescu</dc:creator>
<guid>http://centralmallro.wordpress.com/2009/11/23/prototyping-2/</guid>
<description><![CDATA[Într-un sfârșit am realizat că totuși trebuie să ne apucăm și să mai lucrăm și la proiectul de IOC a]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Într-un sfârșit am realizat că totuși trebuie să ne apucăm și să mai lucrăm și la proiectul de IOC așa am organizat cele două sesiuni de chat în care am decis practic ce o să facem și ce direcție vom da mall-ului nostru virtual.</p>
<p>În urma discuțiilor avute interfața a suferit următoarele modificări:</p>

<p>Dicuțiile detaliate pe care le-am avut cu echipa mea pot fi găsite la următoarele adrese:</p>
<ul>
<li><a href="http://ltfll-lin.code.ro:11080/concertChat/roomContent.jsp?channelID=Backwards%20IOC%20-%20E2">http://ltfll-lin.code.ro:11080/concertChat/roomContent.jsp?channelID=Backwards%20IOC%20-%20E2</a></li>
<li><a href="http://ltfll-lin.code.ro:11080/concertChat/roomContent.jsp?channelID=Backwards%20IOC%20-%20E3">http://ltfll-lin.code.ro:11080/concertChat/roomContent.jsp?channelID=Backwards%20IOC%20-%20E3</a></li>
</ul>
<p>Personal recomand vizualizarea conținutului chatului numărul 2 iar în cazul în care vă plictisiți dați un search pentru cuvântul &#8220;bunica&#8221;.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Primul post după atâta amar de vreme]]></title>
<link>http://centralmallro.wordpress.com/2009/11/23/primul-post-dupa-atata-amar-de-vreme/</link>
<pubDate>Mon, 23 Nov 2009 00:20:37 +0000</pubDate>
<dc:creator>mihaidumitrescu</dc:creator>
<guid>http://centralmallro.wordpress.com/2009/11/23/primul-post-dupa-atata-amar-de-vreme/</guid>
<description><![CDATA[Data stelară 11*32*9002. Este ora 2:08 am. Naveta IOC tocmai a reintrat pe orbită. Nu mă pricep la c]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><em><strong>Data stelară 11*32*9002</strong></em>.</p>
<p>Este ora 2:08 am. Naveta IOC tocmai a reintrat pe orbită.</p>
<p>Nu mă pricep la cuvinte și totuși îmi fac curaj (cobor în beci și îmi iau o sticlă de vin, bineînțeles vin roșu) și după ore în care am căutat pixeli morți ai LCD-ului îmi fac curaj și ating tastatură și ce observ: naveta IOC este atacată.</p>
<p>Nava inamică Windows 7 ne-a atacat cu  arma ei supremă: <strong>BSOD</strong>.</p>
<p>Pur și simplu cineva nu dorește ca naveta IOC șă-și ducă misiunea la bun sfârșit. Părăsesc nava mamă într-o capsulă de mici dimensiuni numită &#8220;Deadline&#8221; în speranța că voi reuși să îndeplinesc misiunea în timp util.</p>
<p>Dacă voi reuși voi să-mi spuneți ca eu sigur nu voi fi treaz.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Why Spring Framework?]]></title>
<link>http://tecnoesis.wordpress.com/2009/11/21/why-spring-framework/</link>
<pubDate>Sat, 21 Nov 2009 07:43:00 +0000</pubDate>
<dc:creator>Rajani Ramsagar</dc:creator>
<guid>http://tecnoesis.wordpress.com/2009/11/21/why-spring-framework/</guid>
<description><![CDATA[    Why Spring Framework?   Since the widespread implementation of J2EE applications in 1999/2000, i]]></description>
<content:encoded><![CDATA[    Why Spring Framework?   Since the widespread implementation of J2EE applications in 1999/2000, i]]></content:encoded>
</item>
<item>
<title><![CDATA[Why The World Loves Obama]]></title>
<link>http://nietzscheshammer.wordpress.com/2009/11/20/why-the-world-loves-obama/</link>
<pubDate>Fri, 20 Nov 2009 13:38:05 +0000</pubDate>
<dc:creator>nietzscheshammer</dc:creator>
<guid>http://nietzscheshammer.wordpress.com/2009/11/20/why-the-world-loves-obama/</guid>
<description><![CDATA[People around the world like Barack Obama.  Polling indicates that he is very popular and that he ha]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>People around the world like Barack Obama.  Polling indicates that he is very popular and that he has increased America&#8217;s standing internationally.</p>
<p>And yet</p>
<ul>
<li>The G20 rebuffed his every attempt to get them to drive their economies into the same black hole he has the US on course for.  Meanwhile Germany and France lead just about every other nation on economic recoveries.</li>
<li>The IOC voted the US down earlier than everyone expected as a result of Barack and Michelle Obama&#8217;s pathetic, self-centered, &#8221;it is all about us&#8221; plea.</li>
<li>Iran continues to develop a nuclear capability.</li>
<li>North Korea not only makes threats but engages with South Korea.</li>
<li>US trade ships like the Maersk Alabama are attacked by pirates not once, but twice!</li>
<li>Russia refuses to budge and even forces Obama to give up missile defense systems in Poland.</li>
<li>China not only refused to move on human rights, refused to do anything regarding Iran, refused to change its monetary policy, but it stopped buying US debt and lectured Obama on his handling of the US economy; they even literally laugh out loud at Obama&#8217;s treasury secretary, Tim Geithner.</li>
<li>Iraq is disintegrating.</li>
<li>Afghanistan is disintegrating.</li>
<li>And we have had the first domestic terrorist attack in seven years at Ft. Hood by the Muslim terrorist Nidal Hasan.</li>
<li>Now Obama will give the Muslim terrorist Kaleid Sheik Mohammed (KSM) the greatest marketing tool yet to recruit Muslims to jihad against the US and further erode respect for American around the world.  Obama is going to give KSM a bully pulpit from which to proclaim all of the virtues of Islam and jihad against America, defame America and tell the world about all of the horrible things America has done.</li>
</ul>
<p>Oh yes, Barack Obama is doing wonders for America internationally.  Never before have foreign nations had such respect for the US.</p>
<p>Give me a break.</p>
<p>China just made him look like simpleton toyed with him.  Obama is viewed as a naive child and the world thinks he is a joke and that the US is weak.   That is why there is increasing violence in Afghanistan and Iraq, why American trade ships are being attacked, why Iran and North Korea are becoming more beligerant and the G20 rebuffs his every attempt at negotiating anything on behalf of the US.</p>
<p>The world love him sure but why?  The polling before his election in November 2008 also indicated that the rest of the world wanted a weaker America and that is what they got.  Obama is destroying the US economy, its political clout on the world stage and leading America into failure militarily in Afghanistan and Iraq. </p>
<p>So why wouldn&#8217;t the rest of the world love him?  Actually that is the wrong question as the answer is obvious and only to be expected. </p>
<p>The question that you should be asking yourself is: Why do the Americans that love him  love him so (the media, socialists, Democrats, racists, etc.)?</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Spring Framework Terminologies]]></title>
<link>http://tecnoesis.wordpress.com/2009/11/19/spring-terminologies/</link>
<pubDate>Thu, 19 Nov 2009 14:08:27 +0000</pubDate>
<dc:creator>Rajani Ramsagar</dc:creator>
<guid>http://tecnoesis.wordpress.com/2009/11/19/spring-terminologies/</guid>
<description><![CDATA[  Chapter 1: Terminologies   Design Patterns: A design pattern is a conceptual general reusable solu]]></description>
<content:encoded><![CDATA[  Chapter 1: Terminologies   Design Patterns: A design pattern is a conceptual general reusable solu]]></content:encoded>
</item>
<item>
<title><![CDATA[cateva sfaturi pentru designul interfetei]]></title>
<link>http://interfeteomcalculator.wordpress.com/2009/11/17/cateva-sfaturi-pentru-designul-interfetei/</link>
<pubDate>Tue, 17 Nov 2009 20:34:41 +0000</pubDate>
<dc:creator>vlad</dc:creator>
<guid>http://interfeteomcalculator.wordpress.com/2009/11/17/cateva-sfaturi-pentru-designul-interfetei/</guid>
<description><![CDATA[]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><!-- SlideShare error: doc is missing or has illegal characters /[^-_a-zA-Z0-9]/ --></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Soros Fund Holdings]]></title>
<link>http://247wallst.com/2009/11/17/soros-fund-holdings/</link>
<pubDate>Tue, 17 Nov 2009 15:52:08 +0000</pubDate>
<dc:creator>247wallst</dc:creator>
<guid>http://247wallst.com/2009/11/17/soros-fund-holdings/</guid>
<description><![CDATA[Yesterday Soros Fund Management Filed a 13-F outlining the fund&#8217;s long portfolio as of Septemb]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Yesterday Soros Fund Management Filed a 13-F outlining the fund&#8217;s long portfolio as of September 30th, 2009.  The total value of the holdings reported in the filing is $6,198,089.  Twenty holdings represented roughly 50% of the value.  Soros Fund Management is a hedge fund management company that invests primarily based on macroeconomic analysis.  It should be noted that the fund&#8217;s equity portfolio likely contains significant short positions, which are not reported in 13-F filings.  Some of the positions in the filing may be in place as hedges or part of a multi-part trade, rather than a directional bet.  With that in mind, a glance at this firm&#8217;s major holdings provides clues to its macroeconomic outlook.  </p>
<p>Total stakes in Petroleo Brasileo Brasileiro (NYSE: PBR) represent 9.23% of the value of the positions reported in the filing, with just over 13 million shares held.  This is down from by 2.3 million from the fund&#8217;s last filing.<!--more--></p>
<p>A stake in Hess Corp (NYSE: HES) represents 4.47% of the value of the protfolio reported in the filing.  Soros Fund managament held 5,886,40 shares, up by 1700 from the fund&#8217;s last filing.</p>
<p>Potash Corp (NYSE: POT) represents 4.3% of the fund&#8217;s reported portfolio.  The fund held 2,948,421 shares as of September 30th, up 971,386 since the fund&#8217;s last filing.</p>
<p>LSI Corporation (NYSE: LSI) represents 4.05% of the fund&#8217;s reported portfolio.  The fund held 249,687,000 shares as of September 30th, up 600,000 since the fund&#8217;s last filing.</p>
<p>SPDR Gold Trust (NYSE: GLD) represents 3.91% of the fund&#8217;s reported portfolio.  The fund held 2,450,320 shares as of September 30th, up 2,445,420 since the fund&#8217;s last filing.</p>
<p>Linear Technology Corp (NASDAQ: LLTC) represents 3.68% of the fund&#8217;s reported portfolio.  The fund held 277,978,000 shares as of September 30th, up 4,500,000 since the fund&#8217;s last filing.</p>
<p>Plains Exploration &#38; Production Company (NYSE: PXP) represents 2.73% of the fund&#8217;s reported portfolio.  The fund held 6,113,815 shares as of September 30th, down 412,585 since the fund&#8217;s last filing.</p>
<p>Flextronics International (NASDAQ: FLEX)) represents 2.47% of the fund&#8217;s reported portfolio.  The fund held 157,805,000 shares as of September 30th, up 14,166,000 since the fund&#8217;s last filing.</p>
<p>Verizon Communications Inc (NYSE: VZ) represents 2.24% of the fund&#8217;s reported portfolio.  The fund held 4,578,953 shares as of September 30th, up 3,984,100 since the fund&#8217;s last filing.</p>
<p>Lawson Software Inc (NASDAQ: LWSN) represents 2.2% of the fund&#8217;s reported portfolio.  The fund held 143,028,000 shares as of September 30th, up 128,948,000 since the fund&#8217;s last filing.</p>
<p>AT&#38;T Inc (NYSE: T) represents 1.83% of the fund&#8217;s reported portfolio.  The fund held 4,209,497 shares as of September 30th, up 3,418,497 since the fund&#8217;s last filing.</p>
<p>InterOil Corp (NYSE: IOC) represents 1.79% of the fund&#8217;s reported portfolio.  The fund held 2,817,650 shares as of September 30th, up 957,650 since the fund&#8217;s last filing.</p>
<p>DirectTV Group Inc (NASDAQ: DTV) represents 1.77% of the fund&#8217;s reported portfolio.  The fund held 3,984,666 shares as of September 30th, up 3,797,66 since the fund&#8217;s last filing.</p>
<p>Best Buy Inc (NYSE: BBY) represents 1.75% of the fund&#8217;s reported portfolio.  The fund held 2,892,800 shares as of September 30th, up 1,103,300 since the fund&#8217;s last filing.</p>
<p>Weatherford International Ltd (NYSE: WFT) represents 1.65% of the fund&#8217;s reported portfolio.  The fund held 4,922,313 shares as of September 30th, up 3,180,970 since the fund&#8217;s last filing.</p>
<p>Suncor Energy Inc (NYSE: SU) represents 1.47% of the fund&#8217;s reported portfolio.  The fund held 2,643,100 shares as of September 30th, up 1,958,700 since the fund&#8217;s last filing.</p>
<p>Goldman Sachs Group Inc (NYSE: GS) represents 1.23% of the fund&#8217;s reported portfolio.  The fund held 415,100 shares as of September 30th, unchanged since the fund&#8217;s last filing.</p>
<p>Walgreen Co (NYSE: WAG) represents 1.03% of the fund&#8217;s reported portfolio.  The fund held 1,699,600 shares as of September 30th, up 242,700 since the fund&#8217;s last filing.</p>
<p>Wal-Mart Store Inc (NYSE: WMT) represents 0.88% of the fund&#8217;s reported portfolio.  The fund held 1,116,040 shares as of September 30th, up 1,026,330 since the fund&#8217;s last filing.</p>
<p>Yahoo! Inc (NASDAQ: YHOO) represents 0.21% of the fund&#8217;s reported portfolio.  The fund held 25,000 shares as of September 30th, down 105,800 since the fund&#8217;s last filing.</p>
<p>Garrett W. McIntyre</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[IOC seeks gas from RIL]]></title>
<link>http://rilrnrlgasdispute.wordpress.com/2009/11/17/ioc-seeks-gas-from-ril/</link>
<pubDate>Tue, 17 Nov 2009 11:15:26 +0000</pubDate>
<dc:creator>sacchitjogi</dc:creator>
<guid>http://rilrnrlgasdispute.wordpress.com/2009/11/17/ioc-seeks-gas-from-ril/</guid>
<description><![CDATA[Indian Oil Corporation has sought around 23 mscmd of gas from Reliance Industries (RIL) operated Kri]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Indian Oil Corporation has sought around 23 mscmd of gas from Reliance Industries (RIL) operated Krishna-Godavari Basin D6 block.</p>
<p>The IOC Director (Planning and Business Development), BM Bansal, told Business Line that “the Petroleum Ministry had asked all the refineries to submit their gas requirements. Our requirement in next three years is expected to be around 23 mscmd, which we have communicated to the Ministry.”</p>
<p>The refineries require gas for operational purposes. Earlier, refineries were using diesel, furnace oil, and naphtha, for operation purposes but now they are shifting to gas which is a cleaner fuel.</p>
<p>Elaborating Bansal said, “We can take the said quantum once all our refineries are connected to pipeline network. At present, we can take gas at our Mathura and Gujarat refineries.”</p>
<p>While the Panipat refinery will be connected in next three-four months, infrastructure is not ready for Haldia, Barauni, and Guwahati refineries.</p>
<p>Currently, IOC can use gas only at its two refineries – Mathura and Gujarat. It uses 2 mscmd of gas, but once all the refineries are connected the requirement is expected to go up significantly, sources said.</p>
<p>RIL is producing around 45 mscmd of gas from its prolific D6 block. After allocating gas according to the Gas Utilisation Policy from the initial output of 40 mscmd from the block to the priority sectors (power, fertiliser, steel, city gas distribution, and gas-based LPG plants), an Empowered Group of Ministers in October allocated additional 50 mscmd gas (20 mscmd is on firm basis and 30 on fallback).</p>
<p>Additional allocation will enable RIL to ramp up its production. The fall-back allocation refers to the quantum which the operator would be able to produce over and above its sustained output level. RIL is expected to reach 60 mscmd by December. Of the 20 mscmd gas allocated on firm basis, two-third of produce has been given to power plants. Apart from them petrochemical plant (RIL’s plant has got 1.918 mscmd) as well as some refineries will get the gas.</p>
<p>Source : <a href="http://ashishmishrapgdmiimtmeerut.blogspot.com/2009/11/indian-oil-corporation-has-sought.html">http://ashishmishrapgdmiimtmeerut.blogspot.com/2009/11/indian-oil-corporation-has-sought.html</a></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[We are online]]></title>
<link>http://pow4ioc.wordpress.com/2009/11/16/we-are-online/</link>
<pubDate>Mon, 16 Nov 2009 14:13:39 +0000</pubDate>
<dc:creator>Frățilă Cătălin Ionuț</dc:creator>
<guid>http://pow4ioc.wordpress.com/2009/11/16/we-are-online/</guid>
<description><![CDATA[De ieri seară, dacă nu știați deja, Power over Web este online Vă invităm să ne vizitați la http://p]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>De ieri seară, dacă nu știați deja, Power over Web este online <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Vă invităm să ne vizitați la <a href="http://pow.cs.pub.ro" target="_blank">http://pow.cs.pub.ro</a> sau <a href="http://power-over-web.cs.pub.ro" target="_blank">http://power-over-web.cs.pub.ro</a> și să ne lăsați poate și câteva impresii prin formularul de feedback aflat la <a href="http://pow.cs.pub.ro/feedback.php" target="_blank">http://pow.cs.pub.ro/feedback.php</a></p>
<p>În următoarele zile vom continua dezvoltarea scripturilor php pentru afișarea de conținut.</p>
<p>Vom reveni cu detalii în curând.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Как подружить ASP.NET Controls и DI-контейнер]]></title>
<link>http://butaji.wordpress.com/2009/11/16/%d0%ba%d0%b0%d0%ba-%d0%bf%d0%be%d0%b4%d1%80%d1%83%d0%b6%d0%b8%d1%82%d1%8c-asp-net-controls-%d0%b8-di-%d0%ba%d0%be%d0%bd%d1%82%d0%b5%d0%b9%d0%bd%d0%b5%d1%80/</link>
<pubDate>Mon, 16 Nov 2009 06:58:18 +0000</pubDate>
<dc:creator>butaji</dc:creator>
<guid>http://butaji.wordpress.com/2009/11/16/%d0%ba%d0%b0%d0%ba-%d0%bf%d0%be%d0%b4%d1%80%d1%83%d0%b6%d0%b8%d1%82%d1%8c-asp-net-controls-%d0%b8-di-%d0%ba%d0%be%d0%bd%d1%82%d0%b5%d0%b9%d0%bd%d0%b5%d1%80/</guid>
<description><![CDATA[Интро В последнее время решил немного освежить свои знания в ASP.NET, в связи с чем углубился в проц]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><h4>Интро</h4>
<p>В последнее время решил немного освежить свои знания в ASP.NET, в связи с чем углубился в процессы генерации кода контролов по разметке (*.ascx, *.aspx) и обнаружил что можно делать очень интересные решения, о которых&#160; о хочу поведать. Итак сегодня мы узнаем, как подружить наш Dependency Injection контейнер с генерируемым контролами кодом.</p>
<h4>Поехали</h4>
<p><a href="http://butaji.files.wordpress.com/2009/11/dependencyinjection_solution1.gif"><img style="display:inline;margin-left:0;margin-right:0;border-width:0;" title="DependencyInjection_Solution[1]" border="0" alt="DependencyInjection_Solution[1]" align="right" src="http://butaji.files.wordpress.com/2009/11/dependencyinjection_solution1_thumb.gif?w=244&#038;h=136" width="244" height="136" /></a> </p>
<p>В качестве DI-контейнера будет выступать <a href="http://www.codeplex.com/unity/">Microsoft Unity</a>, но это не принципиально, всё что будет касаться DI не зависит от используемого контейнера.</p>
<p>Проблема состоит в следующем – есть некоторый ASP.NET Control, в который мы хотим внедрит зависимости, а так же воспользоваться услугами Service Locator’а для управления интересующими нас зависимостями.</p>
<p>В Microsoft Unity есть некоторые средства для того, чтобы сделать это не прилагая особенных усилий: мы можем произвести инъекцию в свойство элемента управления, нас интересующее примерно следующим образом:</p>
<ol>
<li>Отметить атрибутом Dependency необходимое свойство
<div style="display:inline;float:none;margin:0;padding:0;" id="scid:2EC9848E-067D-4e79-BAB7-06CA927DB962:78bff771-7f66-4569-8222-dc362ddd8152" class="wlWriterEditableSmartContent">
<div style="font-family:consolas,lucida console,courier,monospace;">
<font color="#AA22FF"><b>public</b></font>&#160;<font color="#AA22FF"><b>class</b></font>&#160;<font color="#0000FF">MyControl</font>&#160;:&#160;UserControl<br />
<font color="#AA22FF"><b>{</b></font><br />
<font color="#BB4444">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;[Dependency]</font><br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<font color="#AA22FF"><b>public</b></font>&#160;MyPresenter&#160;Presenter<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<font color="#AA22FF"><b>{</b></font><br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<font color="#AA22FF"><b>get</b></font>&#160;<font color="#AA22FF"><b>{</b></font>&#160;<font color="#AA22FF"><b>return</b></font>&#160;_presenter;&#160;<font color="#AA22FF"><b>}</b></font><br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<font color="#AA22FF"><b>set</b></font><br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<font color="#AA22FF"><b>{</b></font><br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;_presenter&#160;=&#160;<font color="#AA22FF"><b>value</b></font>;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;_presenter.View&#160;=&#160;<font color="#AA22FF"><b>this</b></font>;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<font color="#AA22FF"><b>}</b></font><br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<font color="#AA22FF"><b>}</b></font><br />
<font color="#AA22FF"><b>}</b></font>
</div>
</div>
</li>
<li>
<p>Проинициализировать элемент управления можно следующим образом</p>
<div style="display:inline;float:none;margin:0;padding:0;" id="scid:2EC9848E-067D-4e79-BAB7-06CA927DB962:6c6f0d5b-933b-41e2-bc16-d864c19e9be0" class="wlWriterEditableSmartContent">
<div style="font-family:consolas,lucida console,courier,monospace;">
<font color="#AA22FF"><b>protected</b></font>&#160;<font color="#AA22FF"><b>override</b></font>&#160;<font color="#AA22FF"><b>void</b></font>&#160;<font color="#00A000">OnInit</font>(EventArgs&#160;e)<br />
<font color="#AA22FF"><b>{</b></font><br />
&#160;&#160;&#160;&#160;<font color="#AA22FF"><b>base</b></font>.OnInit(e);<br />
&#160;&#160;&#160;&#160;_сontainer.BuildUp(GetType(),&#160;<font color="#AA22FF"><b>this</b></font>);<br />
<font color="#AA22FF"><b>}</b></font>&#160;
</div>
</div>
</li>
<li>
<p>Позаботиться о местоположении контейнера в вашем приложении, я предлагаю использовать для этого <a href="http://github.com/butaji/Sapphire/blob/master/trunk/Sapphire.Application/Application.cs">HttpApplication</a>, унаследовавшись от которого и произведя небольшие модификации файла <a href="http://github.com/butaji/Sapphire/blob/master/trunk/Sapphire.Application/global.asax">global.asax</a> мы получаем необходимое нам хранилище для контейнера, обращаться с ним необходимо примерно следующим образом</p>
<div style="display:inline;float:none;margin:0;padding:0;" id="scid:2EC9848E-067D-4e79-BAB7-06CA927DB962:cc7df713-8f54-4130-83ef-7972154d3b36" class="wlWriterEditableSmartContent">
<div style="font-family:consolas,lucida console,courier,monospace;">
((Sapphire.Application)HttpContext.Current.ApplicationInstance).Container
</div>
</div>
</li>
</ol>
<p>Решение вполне пригодное, однако пуристические воззрения не дают оставить решение на данной стадии, и думаю, что просто необходимо заменить инъекцию свойства на инъекцию в конструктор, тем более подобный подход – это далеко не то, что мы можем выжать из Unity.</p>
<p>Т.е. наш интерес состоит в том, чтобы класс MyUserControl выглядел примерно так (думаю сборщику страницы это не совсем понравится)</p>
<div style="display:inline;float:none;margin:0;padding:0;" id="scid:2EC9848E-067D-4e79-BAB7-06CA927DB962:ccd9ee48-feee-49f0-b31d-ca9b07854fcc" class="wlWriterEditableSmartContent">
<div style="font-family:consolas,lucida console,courier,monospace;">
<font color="#AA22FF"><b>public</b></font>&#160;<font color="#AA22FF"><b>class</b></font>&#160;<font color="#0000FF">MyControl</font>&#160;:&#160;UserControl<br />
<font color="#AA22FF"><b>{</b></font><br />
&#160;&#160;&#160;&#160;<font color="#AA22FF"><b>public</b></font>&#160;<font color="#00A000">MyControl</font>(MyPresenter&#160;presenter)<br />
&#160;&#160;&#160;&#160;<font color="#AA22FF"><b>{</b></font><br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;_presenter&#160;=&#160;presenter;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;_presenter.View&#160;=&#160;<font color="#AA22FF"><b>this</b></font>;<br />
&#160;&#160;&#160;&#160;<font color="#AA22FF"><b>}</b></font><br />
<font color="#AA22FF"><b>}</b></font>
</div>
</div>
<p>Предлагаю этим и заняться. Начнём с того, что у элементов управления, описанных в разметке страницы, при генерации страницы указываются их конструкторы без параметров, интересно, как можно управлять данным процессом, первоначально, покопавшись в web.config я предполагал сделать это через: </p>
<div style="display:inline;float:none;margin:0;padding:0;" id="scid:2EC9848E-067D-4e79-BAB7-06CA927DB962:3a7af6de-6c18-4e7e-b637-38d1e616e95a" class="wlWriterEditableSmartContent">
<div style="font-family:consolas,lucida console,courier,monospace;">
<font color="#008000"><b>&#60;buildProviders&#62;</b></font><br />
&#160;&#160;&#160;&#160;<font color="#008000"><b>&#60;add</b></font>&#160;<font color="#BB4444">extension=</font><font color="#BB4444">&#8220;.aspx&#8221;</font>&#160;<font color="#BB4444">type=</font><font color="#BB4444">&#8220;System.Web.Compilation.PageBuildProvider&#8221;</font><font color="#008000"><b>/&#62;</b></font><br />
&#160;&#160;&#160;&#160;<font color="#008000"><b>&#60;add</b></font>&#160;<font color="#BB4444">extension=</font><font color="#BB4444">&#8220;.ascx&#8221;</font>&#160;<font color="#BB4444">type=</font><font color="#BB4444">&#8220;System.Web.Compilation.UserControlBuildProvider&#8221;</font><font color="#008000"><b>/&#62;</b></font><br />
&#160;&#160;&#160;&#160;&#8230;<br />
<font color="#008000"><b>&#60;/buildProviders&#62;</b></font>
</div>
</div>
<p>Однако реализация своего PageBuildProvider’а – довольно серьезное занятие, думаю отложить это для серьезной на то необходимости. Однако благодаря BuildProvider’ам можно генерить к примеру слой доступа к данным, для этого надо:</p>
<p>Написать и зарегестрировать обработчик для какого-нибудь своего расширения, к примеру *.dal и сделать что-нибудь наподобее <a href="http://www.codeproject.com/KB/aspnet/DALComp.aspx">http://www.codeproject.com/KB/aspnet/DALComp.aspx</a></p>
<p>кстати подобная логика реализована в SubSonic <a href="http://dotnetslackers.com/articles/aspnet/IntroductionToSubSonic.aspx">http://dotnetslackers.com/articles/aspnet/IntroductionToSubSonic.aspx</a></p>
<p>так же интересная реализация наследования страницы от generic типов <a title="http://stackoverflow.com/questions/1480373/generic-inhertied-viewpage-and-new-property" href="http://stackoverflow.com/questions/1480373/generic-inhertied-viewpage-and-new-property">http://stackoverflow.com/questions/1480373/generic-inhertied-viewpage-and-new-property</a></p>
<p>ещё можно, к примеру генерировать исключения, объекты передачи данных и многое другое, ограничением является лишь ваша фантазия.</p>
<p>Вообщем, данный вариант нам не подходит, необходимо сделать что-нибудь проще, и есть отличное решение, с помощью атрибута ControlBuilder мы можем указать свою логику сборки элемента управления из разметки, это будет выглядеть примерно так</p>
<div style="display:inline;float:none;margin:0;padding:0;" id="scid:2EC9848E-067D-4e79-BAB7-06CA927DB962:67858728-23e4-49d7-8872-1090741c3a32" class="wlWriterEditableSmartContent">
<div style="font-family:consolas,lucida console,courier,monospace;">
<font color="#BB4444">[ControlBuilder(typeof(MyControlBuilder))]</font><br />
<font color="#AA22FF"><b>public</b></font>&#160;<font color="#AA22FF"><b>class</b></font>&#160;<font color="#0000FF">UserControl</font>&#160;:&#160;System.Web.UI.UserControl<br />
<font color="#AA22FF"><b>{</b></font><br />
<font color="#AA22FF"><b>}</b></font>
</div>
</div>
<p>Теперь разберемся с реализацией&#160; MyControlBuilder, этот тип должен наследовать от ControlBuilder и с помощью перегрузки ProcessGeneratedCode мы с вами сможем указать сборщику на необходимость использования нашего кода вместо вызова конструктора без атрибутов элемента управления:</p>
<div style="display:inline;float:none;margin:0;padding:0;" id="scid:2EC9848E-067D-4e79-BAB7-06CA927DB962:201bf84e-336c-4c96-8c41-ba2375b0820a" class="wlWriterEditableSmartContent">
<div style="font-family:consolas,lucida console,courier,monospace;">
&#160;&#160;&#160;&#160;<font color="#AA22FF"><b>public</b></font>&#160;<font color="#AA22FF"><b>override</b></font>&#160;<font color="#AA22FF"><b>void</b></font>&#160;<font color="#00A000">ProcessGeneratedCode</font>(CodeCompileUnit&#160;codeCompileUnit,<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;CodeTypeDeclaration&#160;baseType,<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;CodeTypeDeclaration&#160;derivedType,<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;CodeMemberMethod&#160;buildMethod,<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;CodeMemberMethod&#160;dataBindingMethod)<br />
&#160;&#160;&#160;&#160;<font color="#AA22FF"><b>{</b></font><br />
&#160;&#160;&#160;&#160;&#160;&#160;codeCompileUnit.Namespaces[<font color="#666666">0</font>].Imports.Add(<font color="#AA22FF"><b>new</b></font>&#160;CodeNamespaceImport(<font color="#BB4444">&#8220;Sapphire.Web.UI&#8221;</font>));<br />
&#160;&#160;&#160;&#160;&#160;&#160;ReplaceConstructorWithContainerResolveMethod(buildMethod);<br />
&#160;&#160;&#160;&#160;&#160;&#160;<font color="#AA22FF"><b>base</b></font>.ProcessGeneratedCode(codeCompileUnit,&#160;baseType,&#160;derivedType,&#160;buildMethod,&#160;dataBindingMethod);<br />
&#160;&#160;&#160;&#160;<font color="#AA22FF"><b>}</b></font>
</div>
</div>
<p>самое интересно скрывает метод ReplaceConstructorWithContainerResolveMethod </p>
<div style="display:inline;float:none;margin:0;padding:0;" id="scid:2EC9848E-067D-4e79-BAB7-06CA927DB962:742b123c-c0b8-48de-9e0f-0e0914be7bc5" class="wlWriterEditableSmartContent">
<div style="font-family:consolas,lucida console,courier,monospace;">
&#160;&#160;&#160;&#160;<font color="#AA22FF"><b>private</b></font>&#160;<font color="#AA22FF"><b>void</b></font>&#160;<font color="#00A000">ReplaceConstructorWithContainerResolveMethod</font>(CodeMemberMethod&#160;buildMethod)<br />
&#160;&#160;&#160;&#160;<font color="#AA22FF"><b>{</b></font><br />
&#160;&#160;&#160;&#160;&#160;&#160;<font color="#AA22FF"><b>foreach</b></font>&#160;(CodeStatement&#160;statement&#160;<font color="#AA22FF"><b>in</b></font>&#160;buildMethod.Statements)<br />
&#160;&#160;&#160;&#160;&#160;&#160;<font color="#AA22FF"><b>{</b></font><br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;var&#160;assign&#160;=&#160;statement&#160;<font color="#AA22FF"><b>as</b></font>&#160;CodeAssignStatement;</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<font color="#AA22FF"><b>if</b></font>&#160;(<font color="#AA22FF"><b>null</b></font>&#160;!=&#160;assign)<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<font color="#AA22FF"><b>{</b></font><br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;var&#160;constructor&#160;=&#160;assign.Right&#160;<font color="#AA22FF"><b>as</b></font>&#160;CodeObjectCreateExpression;</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<font color="#AA22FF"><b>if</b></font>&#160;(<font color="#AA22FF"><b>null</b></font>&#160;!=&#160;constructor)<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<font color="#AA22FF"><b>{</b></font><br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;assign.Right&#160;=<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<font color="#AA22FF"><b>new</b></font>&#160;<font color="#00A000">CodeSnippetExpression</font>(<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<font color="#00BB00"><b>string</b></font>.Format(<font color="#BB4444">&#8220;SapphireControlBuilder.Build&#60;{0}&#62;()&#8221;</font>,<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ControlType.FullName));<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<font color="#AA22FF"><b>break</b></font>;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<font color="#AA22FF"><b>}</b></font><br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<font color="#AA22FF"><b>}</b></font><br />
&#160;&#160;&#160;&#160;&#160;&#160;<font color="#AA22FF"><b>}</b></font><br />
&#160;&#160;&#160;&#160;<font color="#AA22FF"><b>}</b></font>
</div>
</div>
<p>следуя по коду можно обратить внимание, что он заменяет вызов конструктора на вызов генерик-метода Build, в котором мы и обратимся к нашему контейнеру с просьбой вызвать наш элемент управления и проинициализировать его конструктор необходимыми зависимостями.</p>
<p>Однако это ещё не решении задания, т.к. есть метод динамической загрузки элемента управления Page.LoadControl(), для него придётся написать свой вариант</p>
<div style="display:inline;float:none;margin:0;padding:0;" id="scid:2EC9848E-067D-4e79-BAB7-06CA927DB962:12b0b2e2-a28f-4b65-a35f-6e09cc01a770" class="wlWriterEditableSmartContent">
<div style="font-family:consolas,lucida console,courier,monospace;">
&#160;&#160;<font color="#AA22FF"><b>public</b></font>&#160;<font color="#AA22FF"><b>static</b></font>&#160;<font color="#AA22FF"><b>class</b></font>&#160;<font color="#0000FF">PageExtensions</font><br />
&#160;&#160;<font color="#AA22FF"><b>{</b></font><br />
&#160;&#160;&#160;&#160;<font color="#AA22FF"><b>public</b></font>&#160;<font color="#AA22FF"><b>static</b></font>&#160;UserControl&#160;<font color="#00A000">LoadAndBuildUpControl</font>(<font color="#AA22FF"><b>this</b></font>&#160;Page&#160;page,&#160;<font color="#00BB00"><b>string</b></font>&#160;virtualPath)<br />
&#160;&#160;&#160;&#160;<font color="#AA22FF"><b>{</b></font><br />
&#160;&#160;&#160;&#160;&#160;&#160;var&#160;control&#160;=&#160;page.LoadControl(virtualPath);<br />
&#160;&#160;&#160;&#160;&#160;&#160;<font color="#AA22FF"><b>return</b></font>&#160;SapphireControlBuilder.Build&#60;UserControl&#62;(control.GetType());<br />
&#160;&#160;&#160;&#160;<font color="#AA22FF"><b>}</b></font><br />
&#160;&#160;<font color="#AA22FF"><b>}</b></font>
</div>
</div>
<p>Вот мы и справились с поставленной задачей, однако это ещё не всё. А почему теперь не воспользоваться всеми преимуществами Unity, и не внедрить в наш элемент управления <a href="http://habrahabr.ru/blogs/net/50845/">AOP времени исполнения</a> с помощью <a href="http://msdn.microsoft.com/en-us/library/dd140045.aspx">Unity Interception</a>.</p>
<p>К примеру мы можем сделать следующее </p>
<div style="display:inline;float:none;margin:0;padding:0;" id="scid:2EC9848E-067D-4e79-BAB7-06CA927DB962:8f3bc656-82a3-4044-971c-c7bfdc000756" class="wlWriterEditableSmartContent">
<div style="font-family:consolas,lucida console,courier,monospace;">
<font color="#AA22FF"><b>public</b></font>&#160;<font color="#AA22FF"><b>class</b></font>&#160;<font color="#0000FF">MyControl</font>&#160;:&#160;UserControl<br />
<font color="#AA22FF"><b>{</b></font><br />
<font color="#BB4444">&#160;&#160;&#160;&#160;[HandleException]</font><br />
&#160;&#160;&#160;&#160;<font color="#AA22FF"><b>public</b></font>&#160;<font color="#AA22FF"><b>override</b></font>&#160;<font color="#AA22FF"><b>void</b></font>&#160;<font color="#00A000">DataBind</font>()<br />
&#160;&#160;&#160;&#160;<font color="#AA22FF"><b>{</b></font><br />
&#160;&#160;&#160;&#160;&#160;&#160;<font color="#AA22FF"><b>base</b></font>.DataBind();<br />
&#160;&#160;&#160;&#160;<font color="#AA22FF"><b>}</b></font><br />
<font color="#AA22FF"><b>}</b></font>
</div>
</div>
<p>Это будет означать, что обработка исключений должна добавляться на лету, к тому ж предоставляя нам возможность её изменения во время исполнения, для начала пусть её реализация будет примерно следующая</p>
<div style="display:inline;float:none;margin:0;padding:0;" id="scid:2EC9848E-067D-4e79-BAB7-06CA927DB962:b531ecfa-a7e4-4e58-832b-d666bfdd8aba" class="wlWriterEditableSmartContent">
<div style="font-family:consolas,lucida console,courier,monospace;">
<font color="#BB4444">&#160;&#160;[AttributeUsage(AttributeTargets.Method&#160;&#124;&#160;AttributeTargets.Property,&#160;AllowMultiple&#160;=&#160;false,&#160;Inherited&#160;=&#160;true)]</font><br />
&#160;&#160;<font color="#AA22FF"><b>public</b></font>&#160;<font color="#AA22FF"><b>class</b></font>&#160;<font color="#0000FF">HandleExceptionAttribute</font>&#160;:&#160;HandlerAttribute<br />
&#160;&#160;<font color="#AA22FF"><b>{</b></font><br />
&#160;&#160;&#160;&#160;<font color="#AA22FF"><b>public</b></font>&#160;<font color="#AA22FF"><b>override</b></font>&#160;ICallHandler&#160;<font color="#00A000">CreateHandler</font>(IUnityContainer&#160;container)<br />
&#160;&#160;&#160;&#160;<font color="#AA22FF"><b>{</b></font><br />
&#160;&#160;&#160;&#160;&#160;&#160;<font color="#AA22FF"><b>return</b></font>&#160;<font color="#AA22FF"><b>new</b></font>&#160;<font color="#00A000">ExceptionHandler</font>();<br />
&#160;&#160;&#160;&#160;<font color="#AA22FF"><b>}</b></font><br />
&#160;&#160;<font color="#AA22FF"><b>}</b></font></p>
<p>&#160;&#160;<font color="#AA22FF"><b>public</b></font>&#160;<font color="#AA22FF"><b>class</b></font>&#160;<font color="#0000FF">ExceptionHandler</font>&#160;:&#160;ICallHandler<br />
&#160;&#160;<font color="#AA22FF"><b>{</b></font><br />
&#160;&#160;&#160;&#160;<font color="#008800"><i>///&#160;&#60;exception&#160;cref=&#8221;SapphireUserFriendlyException&#8221;&#62;&#60;c&#62;SapphireUserFriendlyException&#60;/c&#62;.&#60;/exception&#62;<br />
</i></font>&#160;&#160;&#160;&#160;<font color="#AA22FF"><b>public</b></font>&#160;IMethodReturn&#160;<font color="#00A000">Invoke</font>(IMethodInvocation&#160;input,&#160;GetNextHandlerDelegate&#160;getNext)<br />
&#160;&#160;&#160;&#160;<font color="#AA22FF"><b>{</b></font><br />
&#160;&#160;&#160;&#160;&#160;&#160;var&#160;result&#160;=&#160;getNext()(input,&#160;getNext);<br />
&#160;&#160;&#160;&#160;&#160;&#160;<font color="#AA22FF"><b>if</b></font>&#160;(result.Exception&#160;==&#160;<font color="#AA22FF"><b>null</b></font>)<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<font color="#AA22FF"><b>return</b></font>&#160;result;<br />
&#160;&#160;&#160;&#160;&#160;&#160;<font color="#AA22FF"><b>throw</b></font>&#160;<font color="#AA22FF"><b>new</b></font>&#160;<font color="#00A000">SapphireUserFriendlyException</font>();<br />
&#160;&#160;&#160;&#160;<font color="#AA22FF"><b>}</b></font></p>
<p>&#160;&#160;&#160;&#160;<font color="#AA22FF"><b>public</b></font>&#160;<font color="#00BB00"><b>int</b></font>&#160;Order&#160;<font color="#AA22FF"><b>{</b></font>&#160;<font color="#AA22FF"><b>get</b></font>;&#160;<font color="#AA22FF"><b>set</b></font>;&#160;<font color="#AA22FF"><b>}</b></font><br />
&#160;&#160;<font color="#AA22FF"><b>}</b></font>
</div>
</div>
<p>Ну и конечно же надо сконфигурировать контейнер для создания наших прокси-обработчиков</p>
<div style="display:inline;float:none;margin:0;padding:0;" id="scid:2EC9848E-067D-4e79-BAB7-06CA927DB962:611e9f53-0255-4366-a483-321e39472de5" class="wlWriterEditableSmartContent">
<div style="font-family:consolas,lucida console,courier,monospace;">
&#160;&#160;&#160;&#160;<font color="#AA22FF"><b>public</b></font>&#160;<font color="#AA22FF"><b>static</b></font>&#160;T&#160;Build&#60;T&#62;()<br />
&#160;&#160;&#160;&#160;<font color="#AA22FF"><b>{</b></font><br />
&#160;&#160;&#160;&#160;&#160;&#160;<font color="#AA22FF"><b>return</b></font>&#160;(T)((Application)HttpContext.Current.ApplicationInstance)<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;.Container<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;.&#160;AddNewExtension&#60;Interception&#62;()<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;.Configure&#60;Interception&#62;()<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;.SetInterceptorFor&#60;T&#62;(<font color="#AA22FF"><b>new</b></font>&#160;VirtualMethodInterceptor())<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;.Container<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;.Resolve&#60;T&#62;();<br />
&#160;&#160;&#160;&#160;<font color="#AA22FF"><b>}</b></font>
</div>
</div>
<h4>Ресурсы</h4>
<p><a href="http://www.slideshare.net/butaji/sapphire-2256588">Sapphire.Application</a> – для чего всё это реализовывалось <a href="http://github.com/butaji/Sapphire/tree/master/trunk/Sapphire.Application/">http://github.com/butaji/Sapphire/tree/master/trunk/Sapphire.Application/</a></p>
<p>Дэвид предлагает реализации связывания с данными следующего поколения “Databinding 3.0” на основе аналогичного подхода <a href="http://weblogs.asp.net/davidfowler/archive/2009/11/13/databinding-3-0.aspx">http://weblogs.asp.net/davidfowler/archive/2009/11/13/databinding-3-0.aspx</a></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[India's Most Trusted Brands - 2007: Economic Times Brand Equity Survey]]></title>
<link>http://sohandhande.wordpress.com/2009/11/15/indias-most-trusted-brands-2007-economic-times-brand-equity-survey/</link>
<pubDate>Sun, 15 Nov 2009 12:11:32 +0000</pubDate>
<dc:creator>sohandhande</dc:creator>
<guid>http://sohandhande.wordpress.com/2009/11/15/indias-most-trusted-brands-2007-economic-times-brand-equity-survey/</guid>
<description><![CDATA[Economic Times has published Brand Equity&#8217;s Most Trusted Brands. Colgate for the fourth year i]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Economic Times has published Brand Equity&#8217;s Most Trusted Brands. Colgate for the fourth year in a row topped the list. The first ten positions in the list looks like this</p>
<p>1.Colgate<br />
2.Vicks<br />
3.Lux<br />
4.Nokia<br />
5.Britannia<br />
6.Dettol<br />
7.Lifebuoy<br />
8.Pepsodent<br />
9.Pond&#8217;s<br />
10.Tata Tea</p>
<p>The top ten service brands are<br />
1.LIC<br />
2.Airtel<br />
3.State Bank of India<br />
4.Reliance India Mobile<br />
5.BSNL<br />
6.Tata Indicom<br />
7.Indian oil<br />
8.ICICI Bank<br />
9.Bank of India<br />
10.Reliance Petroleum</p>
<div>Colgate has every qualification to be in the number one league because of its ability to understand Indian consumer and innovate interms of the product and marketing mix. The brands that feature in teh list is a testimony of successful marketing.</div>
<p>Cheers</p>
<div class="wp-caption alignnone" style="width: 1013px"><img title="Most Trusted Brands: India 2007" src="http://3.bp.blogspot.com/_1pKvii0Z9Cs/Rl5OgdVhGvI/AAAAAAAAAok/OWY_1nffBxE/s1600/best%2Bbrands.jpg" alt="" width="1003" height="1341" /><p class="wp-caption-text">Most Trusted Brands: India 2007</p></div>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[India's Most Trusted Brands - 2008: Economic Times Brand Equity Survey]]></title>
<link>http://sohandhande.wordpress.com/2009/11/15/indias-most-trusted-brands-2008-economic-times-brand-equity-survey/</link>
<pubDate>Sun, 15 Nov 2009 12:07:42 +0000</pubDate>
<dc:creator>sohandhande</dc:creator>
<guid>http://sohandhande.wordpress.com/2009/11/15/indias-most-trusted-brands-2008-economic-times-brand-equity-survey/</guid>
<description><![CDATA[Economic Times&#8217; Brand Equity has published the list of India&#8217;s Most Trusted Brands Surve]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Economic Times&#8217; Brand Equity has published the list of India&#8217;s Most Trusted Brands Survey findings today.<br />
The top ten brands are</p>
<ol>
<li> Nokia</li>
<li><a href="http://marketingpractice.blogspot.com/search?q=colgate+%2B+suraksha+chakr">Colgate</a></li>
<li><a href="http://marketingpractice.blogspot.com/search?q=desh+ka+namak">Tata Salt</a></li>
<li><a href="http://marketingpractice.blogspot.com/search?q=dishum+dishum">Pepsodent</a></li>
<li><a href="http://marketingpractice.blogspot.com/search?q=ponds+%2B+woogly">Ponds</a></li>
<li><a href="http://marketingpractice.blogspot.com/search?q=lux+%2B+190">Lux</a></li>
<li>Britannia</li>
<li><a href="http://marketingpractice.blogspot.com/search?q=dettol+%2Breckitt">Dettol</a></li>
<li><a href="http://marketingpractice.blogspot.com/search?q=lifebuoy+%2B+HLL+%2B+raksha">Lifebuoy</a></li>
<li><a href="http://marketingpractice.blogspot.com/search?q=vicks+vaporub+p%26G">Vicks</a></li>
</ol>
<p>This year, Nokia displaced Colgate to gain the top slot. Nokia is riding on the explosive telecom growth that India is now witnessing. The focus on quality and features has made Nokia a brand that Indian consumers love. The brand was able to bring in successful models regularly. Currently the N series has been the poster boy in its portfolio. Along with the models, the brand also has been investing in building the brand equity. The result of the survey also throws an interesting lesson. Recently Nokia faced the issue of &#8221; overheating of battery&#8221;. Around 46 mn BL-5C series batteries was recalled by Nokia worldwide . Marketers feared that this recall will have a negative impact on Nokia&#8217;s brand equity. But this survey proved that Indian consumers have been impressed by the commitment of Nokia in the Indian market.</p>
<p>The current results has been a disappointment for Colgate which topped the list for the past 4 years. But I feel that the brand lost the position not because of any loss of trust but because the mobile telecom category have seen a huge growth and was the top- of -the- mind category for consumers. Colgate still leads the toothpaste category but will have a reason to worry because Pepsodent has moved to the No.4 slot from the No.8 slot.</p>
<p>The top ten service brands are</p>
<ol>
<li>LIC</li>
<li>Airtel</li>
<li>State Bank of India</li>
<li>Reliance Mobile</li>
<li>BSNL</li>
<li>Tata Indicom</li>
<li>Indian Oil</li>
<li>Hutch/Vodafone</li>
<li>ICICI Bank</li>
<li>Bank of India</li>
</ol>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Ski Jumpers Wings Clipped]]></title>
<link>http://ryanvenables.com/2009/11/15/ski-jumpers-wings-clipped/</link>
<pubDate>Sun, 15 Nov 2009 06:12:27 +0000</pubDate>
<dc:creator>ryanvenables</dc:creator>
<guid>http://ryanvenables.com/2009/11/15/ski-jumpers-wings-clipped/</guid>
<description><![CDATA[In a decision sure to disappoint, the BC Court of Appeal dismissed an appeal by a number of female s]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>In a decision sure to disappoint, the BC Court of Appeal dismissed an appeal by a number of female ski jumpers hoping to obtain inclusion to the Vancouver 2010 Olympics.</p>
<p>Aside from obvious Charter issues, the Court said the International Olympic Committee was not bound because it is a Swiss based organization.</p>
<p>The women have not decided if they will seek leave to the Supreme Court of Canada.</p>
<p>See my full story at <a href="http://lawiscool.com/2009/11/14/women-ski-jumpers-grounded/">Law is Cool.</a></p>
</div>]]></content:encoded>
</item>

</channel>
</rss>
