<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blog.aspnet.sk/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>xxxmatko blog</title><link>http://blog.aspnet.sk/xxxmatko/default.aspx</link><description /><dc:language>sk-SK</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><item><title>Javascript help methods - Part 1</title><link>http://blog.aspnet.sk/xxxmatko/archive/2012/04/12/javascript-help-methods-part-1.aspx</link><pubDate>Thu, 12 Apr 2012 09:12:00 GMT</pubDate><guid isPermaLink="false">cbdfeddd-8b45-43cb-b10b-361e40cba84b:307179</guid><dc:creator>xxxmatko</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blog.aspnet.sk/xxxmatko/rsscomments.aspx?PostID=307179</wfw:commentRss><comments>http://blog.aspnet.sk/xxxmatko/archive/2012/04/12/javascript-help-methods-part-1.aspx#comments</comments><description>		&lt;p&gt;
			Z času na čas, počas takého kľudného programovania, sa môže objaviť nejaký malý problém, ktorý treba vyriešiť. 
			Ak je riešenie opakovateľne aplikovateľné a využiteľné aj pri iných podobných situáciách, u mňa realizácia skončí implementáciou tzv. &lt;i&gt;helper&lt;/i&gt; metódy.
			Na tomto mieste by som sa chcel podeliť o moje riešenia týkajúce sa &lt;b&gt;javascriptu&lt;/b&gt;. Možno niekomu pomôžu a uľahčia mu prácu, prípadne prostredníctvom
			konštruktívnych pripomienok budem môcť aj ja sám vylepšiť existujúce riešenia.
		&lt;/p&gt;
		
		&lt;h2&gt;Vyvolanie udalosti na html elemente&lt;/h2&gt;
		&lt;p&gt;
			V ostatnom čase sa dosť intenzívne venujem &lt;b&gt;javascript&lt;/b&gt;-ovému framework-u &lt;b&gt;dojo&lt;/b&gt;. V aplikácii, v ktorej sa v značnej miere využíva widget 
			&lt;a href="http://livedocs.dojotoolkit.org/dijit/Tooltip" target="_blank"&gt;dijit.Tooltip&lt;/a&gt; sa tento prestal skrývať po odídení
			kurzora myšky z daného html prvku, ak na tento prvok bolo predtým kliknuté. Prvok si stále držal focus a &lt;b&gt;tooltip&lt;/b&gt; ostával zobrazený. 
			Po pátraní po internete som zistil, že nie som jediný, kto má problém so správnym skrývaním, respektíve zobrazovaním, &lt;b&gt;tooltipu&lt;/b&gt;. Skúsil som rôzne
			navrhované riešenia, ktoré do istej miery znásilňovali daný widget, ale žiadne z nich nezabralo v mojom prípade. Po preskúmaní správania sa widgetu a html prvkov
			na ktoré bol aplikovaný, som prišiel na riešenie, ktoré zafungovalo. Bolo potrebné &lt;i&gt;&amp;quot;násilne&amp;quot;&lt;/i&gt; vyvolať udalosť &lt;i&gt;&amp;quot;blur&amp;quot;&lt;/i&gt; nad html elementom, pre ktorý
			bol &lt;b&gt;tooltip&lt;/b&gt; vytvorený. A tu je finálna implementácia &lt;code&gt;fireEvent&lt;/code&gt; metódy:
		&lt;/p&gt;
		&lt;table style="width:100%;"&gt;
			&lt;tr&gt;
				&lt;td&gt;
					&lt;div class="code"&gt;
						&lt;font color="blue"&gt;function&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;fireEvent(element,&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;event&lt;/font&gt;&lt;font color="black"&gt;)&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;if&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;(&lt;/font&gt;&lt;font color="blue"&gt;typeof&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;(&lt;/font&gt;&lt;font color="blue"&gt;event&lt;/font&gt;&lt;font color="black"&gt;)&amp;nbsp;!&lt;/font&gt;&lt;font color="blue"&gt;==&amp;nbsp;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;string&amp;quot;&lt;/font&gt;&lt;font color="black"&gt;)&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;throw&amp;nbsp;new&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;TypeError(&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;Input&amp;nbsp;event&amp;nbsp;name&amp;nbsp;must&amp;nbsp;of&amp;nbsp;type&amp;nbsp;string.&amp;quot;&lt;/font&gt;&lt;font color="black"&gt;)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;}&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;if&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;((&lt;/font&gt;&lt;font color="blue"&gt;typeof&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;(element)&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;===&amp;nbsp;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;undefined&amp;quot;&lt;/font&gt;&lt;font color="black"&gt;)&amp;nbsp;||&amp;nbsp;(element&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;==&amp;nbsp;null&lt;/font&gt;&lt;font color="black"&gt;))&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;throw&amp;nbsp;new&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;Error(&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;Element&amp;nbsp;can&amp;nbsp;not&amp;nbsp;be&amp;nbsp;null.&amp;quot;&lt;/font&gt;&lt;font color="black"&gt;)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;}&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="darkgreen"&gt;//&amp;nbsp;IE&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;if&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;(&lt;/font&gt;&lt;font color="blue"&gt;document&lt;/font&gt;&lt;font color="black"&gt;.createEventObject)&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;var&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;evt&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;document&lt;/font&gt;&lt;font color="black"&gt;.createEventObject()&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;element.fireEvent(&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;on&amp;quot;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;+&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;event&lt;/font&gt;&lt;font color="black"&gt;,&amp;nbsp;evt)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;}&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="darkgreen"&gt;//&amp;nbsp;Ostatne&amp;nbsp;prehliadace&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;var&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;evt&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;document&lt;/font&gt;&lt;font color="black"&gt;.createEvent(&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;HTMLEvents&amp;quot;&lt;/font&gt;&lt;font color="black"&gt;)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="darkgreen"&gt;//&amp;nbsp;Inicializacia&amp;nbsp;eventu&amp;nbsp;(Event&amp;nbsp;type,&amp;nbsp;bubbling,&amp;nbsp;cancelable)&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;evt.initEvent(&lt;/font&gt;&lt;font color="blue"&gt;event&lt;/font&gt;&lt;font color="black"&gt;,&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;true&lt;/font&gt;&lt;font color="black"&gt;,&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;true&lt;/font&gt;&lt;font color="black"&gt;)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;!element.dispatchEvent(evt)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&lt;/font&gt;&lt;font color="black"&gt;}&lt;/font&gt;&lt;font color="blue"&gt;;&lt;/font&gt;
					&lt;/div&gt;
				&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
				&lt;th style="font-size:10px;font-family:Tahoma;"&gt;
					Metóda pre vyvolanie udalosti nad html elementom
				&lt;/th&gt;
			&lt;/tr&gt;
		&lt;/table&gt;
		
		&lt;h2&gt;Distinct metóda pre polia&lt;/h2&gt;
		&lt;p&gt;
			Na inom mieste som potreboval získať zo vstupného poľa len distinct-né prvky, a už trocha zdeformovaný zo &lt;b&gt;C#&lt;/b&gt;-pu som hneď písal &lt;code&gt;pole.distinct()&lt;/code&gt;. Čuduj sa svete, error ;-).
			Tak som nakoniec rozšíril &lt;b&gt;Array&lt;/b&gt; objekt o metódu distinct takto:
		&lt;/p&gt;
		&lt;table style="width:100%;"&gt;
			&lt;tr&gt;
				&lt;td&gt;
					&lt;div class="code"&gt;
						&lt;font color="black"&gt;(&lt;/font&gt;&lt;font color="blue"&gt;function&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;()&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;if&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;(!&lt;/font&gt;&lt;font color="blue"&gt;Array&lt;/font&gt;&lt;font color="black"&gt;.prototype.distinct)&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;Array&lt;/font&gt;&lt;font color="black"&gt;.prototype.distinct&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;function&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;()&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;var&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;distinctArray&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;[]&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;(&lt;/font&gt;&lt;font color="blue"&gt;var&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;i&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;&lt;/font&gt;&lt;font color="maroon"&gt;0&lt;/font&gt;&lt;font color="blue"&gt;;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;i&amp;nbsp;&amp;lt;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;this&lt;/font&gt;&lt;font color="black"&gt;.length&lt;/font&gt;&lt;font color="blue"&gt;;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;i++)&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;if&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;(distinctArray.indexOf(&lt;/font&gt;&lt;font color="blue"&gt;this&lt;/font&gt;&lt;font color="black"&gt;[i])&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;===&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;-&lt;/font&gt;&lt;font color="maroon"&gt;1&lt;/font&gt;&lt;font color="black"&gt;)&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;distinctArray.push(&lt;/font&gt;&lt;font color="blue"&gt;this&lt;/font&gt;&lt;font color="black"&gt;[i])&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;}&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;return&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;distinctArray&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;}&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
						})()&lt;/font&gt;&lt;font color="blue"&gt;;&lt;/font&gt;
					&lt;/div&gt;
				&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
				&lt;th style="font-size:10px;font-family:Tahoma;"&gt;
					Distinct metóda pre Array objekt
				&lt;/th&gt;
			&lt;/tr&gt;
		&lt;/table&gt;
		&lt;script src="http://connect.facebook.net/en_US/all.js#xfbml=1"&gt;&lt;/script&gt;&lt;fb:like href="" show_faces="true" width="450" font=""&gt;&lt;/fb:like&gt;&lt;img src="http://blog.aspnet.sk/aggbug.aspx?PostID=307179" width="1" height="1"&gt;</description><category domain="http://blog.aspnet.sk/xxxmatko/archive/tags/dojo/default.aspx">dojo</category><category domain="http://blog.aspnet.sk/xxxmatko/archive/tags/HTML/default.aspx">HTML</category><category domain="http://blog.aspnet.sk/xxxmatko/archive/tags/Javascript/default.aspx">Javascript</category><category domain="http://blog.aspnet.sk/xxxmatko/archive/tags/widget/default.aspx">widget</category></item><item><title>Synchronized Cache Provider</title><link>http://blog.aspnet.sk/xxxmatko/archive/2012/03/13/synchronized-cache-provider.aspx</link><pubDate>Tue, 13 Mar 2012 11:12:00 GMT</pubDate><guid isPermaLink="false">cbdfeddd-8b45-43cb-b10b-361e40cba84b:307143</guid><dc:creator>xxxmatko</dc:creator><slash:comments>26</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blog.aspnet.sk/xxxmatko/rsscomments.aspx?PostID=307143</wfw:commentRss><comments>http://blog.aspnet.sk/xxxmatko/archive/2012/03/13/synchronized-cache-provider.aspx#comments</comments><description>		&lt;p&gt;
			Klasický obraz. Naša aplikácia často načítava rovnaké sady údajov z databázy, čo má za následok pomalšie reakcie aplikácie a zvýšenú záťaž na databázovy server.
			Prečo neuložíme načítané údaje z databázy do &lt;b&gt;Cache&lt;/b&gt; a potom nech sa už načítavajú odtiaľ. To aplikáciu zrýchli a navyše odľahčí databázu.
			Ak príde potom request každú sekendu, tak za minútu ušetríme 59 ďalších dopytov do databázy. Znie to pekne, no nie na darmo sa aj 
			&lt;a href="http://msdn.microsoft.com/en-us/magazine/cc500561.aspx#S7" target="_blank"&gt;tu&lt;/a&gt; píše: &lt;i&gt;&amp;quot;Caching does add complexity, ... make sure you&amp;#39;re really going to benefit from the complexity&amp;quot;&lt;/i&gt;.
		&lt;/p&gt;
		&lt;p&gt;
			Nech teda príde request každú jednu sekendu. Pri spracovaní requestu sa pozrieme, či už sú údaje uložené v Cache, ak nie tak ich načítame a uložime do Cache.
		&lt;/p&gt;
		&lt;table style="width:100%;"&gt;
			&lt;tr&gt;
				&lt;td&gt;
					&lt;a class="" title="nacitanie-dat-z-databazy-a-ulozenie-do-cache" name="nacitanie-dat-z-databazy-a-ulozenie-do-cache"&gt;&lt;/a&gt;
					&lt;div class="code"&gt;
						&lt;font color="blue"&gt;return&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;&lt;span class="class"&gt;Cache&lt;/span&gt;.Read&amp;lt;&lt;span class="class"&gt;SomeData&lt;/span&gt;&amp;gt;(&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;someKey&amp;quot;&lt;/font&gt;&lt;font color="black"&gt;,&amp;nbsp;key&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&lt;/font&gt;&lt;font color="black"&gt;&amp;gt;&lt;br /&gt;
						{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="class"&gt;SomeData&lt;/span&gt;&amp;nbsp;result&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;SelectFromDb()&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;&lt;span class="class"&gt;Cache&lt;/span&gt;.Write(key,&amp;nbsp;result,&amp;nbsp;&lt;span class="class"&gt;DateTime&lt;/span&gt;.UtcNow.AddSeconds(&lt;/font&gt;&lt;font color="maroon"&gt;60&lt;/font&gt;&lt;font color="black"&gt;))&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&lt;/font&gt;&lt;font color="black"&gt;})&lt;/font&gt;&lt;font color="blue"&gt;;&lt;/font&gt;					
					&lt;/div&gt;
				&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
				&lt;th style="font-size:10px;font-family:Tahoma;"&gt;
					Načítanie dát z databázy a uloženie do Cache (&lt;a href="http://petersirka.sk/development/csharp-2-funkcie-na-ktore-somskutocne-pysny/" target="_blank"&gt;vďaka za inšpiráciu&lt;/a&gt;)
				&lt;/th&gt;
			&lt;/tr&gt;
		&lt;/table&gt;
		&lt;p&gt;
			Ak však načítanie dát z databázy bude trvať dlhšie ako jednu sekundu, napríklad rovných desať sekúnd, tak potom prvý request nestihne prijať výsledok z databázy a zapísať ho do &lt;b&gt;Cache&lt;/b&gt; pred príchodom ďalšieho requestu, atď.
			Ak zoberieme do úvahy ešte nejaký ten čas potrebný na spracovanie requestu, tak až dvanásty request v poradí načíta údaje z &lt;b&gt;Cache&lt;/b&gt;. Čiže namiesto 59 requestov do databázy ušetríme v skutočnosti &amp;quot;len&amp;quot;
			49 a prvých 11 requestov bude stále trvať minimálne 10 sekúnd. Je to lepšie ako v prvom prípade, ale aj toto sa dá stále zlepšiť.
		&lt;/p&gt;
		&lt;p&gt;
			Ak synchronizujeme prístup ku &lt;b&gt;Cache&lt;/b&gt;, docielime, že prvý request uzamkne prístup, načíta dáta z databázy a uvoľní zámok, následne ďalšie requesty už nebudú načítavať dáta z databázy ale priamo z 
			&lt;b&gt;Cache&lt;/b&gt;, čím sa ušetrí ďalší čas, potrebný pre spracovanie daného requestu. Dĺžka spracovania prvého requestu bude cca 10 sekúnd. Druhý príde o sekundu neskôr a bude čakať, pokiaľ prvý request neuvoľní
			zámku, čo nastane o 9 sekúnd, tretí bude čakať už len 8 sekúnd atď.
		&lt;/p&gt;
		&lt;p&gt;
			Aj tento spôsob má však svoje trhliny. Nech prídu naraz dva requesty. Prvý bude chcieť načítať dáta pre kľúč &lt;i&gt;&amp;quot;someKey&amp;quot;&lt;/i&gt; a druhý pre kľúč &lt;i&gt;&amp;quot;someOtherKey&amp;quot;&lt;/i&gt;.
			Pre žiaden z týchto kľúčov sa zatiaľ nenachádza hodnota uložená v &lt;b&gt;Cache&lt;/b&gt;, takže oba requesty ju budú chcieť načítať z databázy. Načítanie pre prvý kľúč nech trvá realtívne dlhý čas (napr. 10 sekúnd) a
			pre druhý relatívne krátky čas (napr. 1 sekundu). Ak prístup ku &lt;b&gt;Cache&lt;/b&gt; uzamkne ako prvý request pre kľúč &lt;i&gt;&amp;quot;someKey&amp;quot;&lt;/i&gt;, tak druhý request bude musieť zbytočne čakať na zámke celý čas potrebný pre načítanie
			dát z databázy pre prvý request.
		&lt;/p&gt;
		&lt;table style="width:100%;"&gt;
			&lt;tr&gt;
				&lt;td&gt;
					&lt;a class="" title="cache-manager-pre-synchronizovany-pristup-ku-cache" name="cache-manager-pre-synchronizovany-pristup-ku-cache"&gt;&lt;/a&gt;
					&lt;div class="code"&gt;
						&lt;font color="darkgreen"&gt;//&amp;nbsp;Cache&amp;nbsp;Manager&amp;nbsp;class&amp;nbsp;which&amp;nbsp;uses&amp;nbsp;configured&amp;nbsp;Cache&amp;nbsp;Provider&lt;br /&gt;
						&lt;/font&gt;&lt;font color="blue"&gt;public&amp;nbsp;class&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;Cache&lt;br /&gt;
						{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;#region&lt;/font&gt;&lt;font color="black"&gt;&amp;nbsp;[&amp;nbsp;Variables&amp;nbsp;]&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;private&amp;nbsp;static&amp;nbsp;readonly&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;&lt;span class="class"&gt;ReaderWriterLockSlim&amp;nbsp;&lt;/span&gt;;_cacheLock&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private&amp;nbsp;static&amp;nbsp;readonly&amp;nbsp;object&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;_lock&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private&amp;nbsp;static&amp;nbsp;bool&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;_initialized&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private&amp;nbsp;static&amp;nbsp;bool&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;_initializedDefaultProvider&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private&amp;nbsp;static&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;&lt;span class="class"&gt;Exception&lt;/span&gt;&amp;nbsp;_initializeException&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private&amp;nbsp;static&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;&lt;span class="class"&gt;TimeSpan&lt;/span&gt;&amp;nbsp;_duration&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private&amp;nbsp;static&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;&lt;span class="class"&gt;CacheProviderCollection&lt;/span&gt;&amp;nbsp;_providers&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private&amp;nbsp;static&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;&lt;span class="class"&gt;CacheProvider&lt;/span&gt;&amp;nbsp;_provider&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#endregion&lt;br /&gt;
						&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#region&lt;/font&gt;&lt;font color="black"&gt;&amp;nbsp;[&amp;nbsp;Constructors&amp;nbsp;]&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;static&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;Cache()&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_lock&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;new&amp;nbsp;object&lt;/font&gt;&lt;font color="black"&gt;()&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;_cacheLock&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;&lt;span class="class"&gt;LocksHelper&lt;/span&gt;.GetLockInstance(&lt;span class="class"&gt;LockRecursionPolicy&lt;/span&gt;.NoRecursion)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;_initialized&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;false;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;_initializedDefaultProvider&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;false;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;_initializeException&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;null;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;_duration&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;new&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;&lt;span class="class"&gt;TimeSpan&lt;/span&gt;(&lt;/font&gt;&lt;font color="maroon"&gt;0&lt;/font&gt;&lt;font color="black"&gt;,&amp;nbsp;&lt;/font&gt;&lt;font color="maroon"&gt;20&lt;/font&gt;&lt;font color="black"&gt;,&amp;nbsp;&lt;/font&gt;&lt;font color="maroon"&gt;0&lt;/font&gt;&lt;font color="black"&gt;)&lt;/font&gt;&lt;font color="blue"&gt;;&amp;nbsp;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;}&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;#endregion&lt;br /&gt;
						&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#region&lt;/font&gt;&lt;font color="black"&gt;&amp;nbsp;[&amp;nbsp;Properties&amp;nbsp;]&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;public&amp;nbsp;static&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;&lt;span class="class"&gt;CacheProviderCollection&lt;/span&gt;&amp;nbsp;Providers&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;get&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Initialize()&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;_providers&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;}&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;public&amp;nbsp;static&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;&lt;span class="class"&gt;CacheProvider&lt;/span&gt;&amp;nbsp;Provider&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;get&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Initialize()&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;(_provider&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;==&amp;nbsp;null&lt;/font&gt;&lt;font color="black"&gt;)&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;throw&amp;nbsp;new&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;&lt;span class="class"&gt;InvalidOperationException&lt;/span&gt;(&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;Defined&amp;nbsp;cache&amp;nbsp;provider&amp;nbsp;was&amp;nbsp;not&amp;nbsp;found.&amp;quot;&lt;/font&gt;&lt;font color="black"&gt;)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;}&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;return&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;_provider&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;}&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;public&amp;nbsp;static&amp;nbsp;int&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;Count&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;get&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;using&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;(&lt;/font&gt;&lt;font color="blue"&gt;new&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;&lt;span class="class"&gt;ReadOnlyLock&lt;/span&gt;(_cacheLock))&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;return&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;Provider.Count&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;}&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;public&amp;nbsp;static&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;&lt;span class="class"&gt;ICollection&lt;/span&gt;&amp;lt;&lt;/font&gt;&lt;font color="blue"&gt;string&lt;/font&gt;&lt;font color="black"&gt;&amp;gt;&amp;nbsp;Keys&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;get&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;using&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;(&lt;/font&gt;&lt;font color="blue"&gt;new&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;&lt;span class="class"&gt;ReadOnlyLock&lt;/span&gt;(_cacheLock))&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;return&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;Provider.Keys&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;}&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;#endregion&lt;br /&gt;
						&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#region&lt;/font&gt;&lt;font color="black"&gt;&amp;nbsp;[&amp;nbsp;Private&amp;nbsp;Methods&amp;nbsp;]&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="darkgreen"&gt;//&amp;nbsp;Initializes&amp;nbsp;cache&amp;nbsp;manager.&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;private&amp;nbsp;static&amp;nbsp;void&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;Initialize()&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="darkgreen"&gt;//&amp;nbsp;...&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;}&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="darkgreen"&gt;//&amp;nbsp;Initializes&amp;nbsp;cache&amp;nbsp;according&amp;nbsp;to&amp;nbsp;the&amp;nbsp;input&amp;nbsp;cache&amp;nbsp;config.&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;private&amp;nbsp;static&amp;nbsp;bool&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;InitializeSettings(&lt;span class="class"&gt;CacheConfigSection&lt;/span&gt;&amp;nbsp;config)&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="darkgreen"&gt;//&amp;nbsp;...&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;}&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="darkgreen"&gt;//&amp;nbsp;Initializes&amp;nbsp;default&amp;nbsp;cache&amp;nbsp;provider&amp;nbsp;according&amp;nbsp;to&amp;nbsp;the&amp;nbsp;input&amp;nbsp;cache&amp;nbsp;config.&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;private&amp;nbsp;static&amp;nbsp;bool&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;InitializeDefaultProvider(&lt;span class="class"&gt;CacheConfigSection&lt;/span&gt;&amp;nbsp;config)&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="darkgreen"&gt;//&amp;nbsp;...&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;}&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;#endregion&lt;br /&gt;
						&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#region&lt;/font&gt;&lt;font color="black"&gt;&amp;nbsp;[&amp;nbsp;Public&amp;nbsp;Methods&amp;nbsp;]&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="darkgreen"&gt;//&amp;nbsp;Clears&amp;nbsp;the&amp;nbsp;cache.&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;public&amp;nbsp;static&amp;nbsp;void&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;Clear()&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;using&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;(&lt;/font&gt;&lt;font color="blue"&gt;new&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;&lt;span class="class"&gt;WriteLock&lt;/span&gt;(_cacheLock))&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Provider.Clear()&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;}&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="darkgreen"&gt;//&amp;nbsp;Checks&amp;nbsp;whether&amp;nbsp;the&amp;nbsp;cache&amp;nbsp;contains&amp;nbsp;an&amp;nbsp;item&amp;nbsp;with&amp;nbsp;the&amp;nbsp;spsecified&amp;nbsp;key.&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;public&amp;nbsp;static&amp;nbsp;bool&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;ContainsKey(&lt;/font&gt;&lt;font color="blue"&gt;string&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;key)&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;using&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;(&lt;/font&gt;&lt;font color="blue"&gt;new&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;&lt;span class="class"&gt;ReadOnlyLock&lt;/span&gt;(_cacheLock))&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;return&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;Provider.Contains(key)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;}&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="darkgreen"&gt;//&amp;nbsp;Removes&amp;nbsp;the&amp;nbsp;specified&amp;nbsp;item&amp;nbsp;from&amp;nbsp;the&amp;nbsp;application&amp;#39;s&amp;nbsp;Cache&amp;nbsp;object.&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;public&amp;nbsp;static&amp;nbsp;object&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;Remove(&lt;/font&gt;&lt;font color="blue"&gt;string&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;key)&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;using&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;(&lt;/font&gt;&lt;font color="blue"&gt;new&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;&lt;span class="class"&gt;ReadLock&lt;/span&gt;(_cacheLock))&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;if&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;(Provider.Contains(key))&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;using&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;(&lt;/font&gt;&lt;font color="blue"&gt;new&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;&lt;span class="class"&gt;WriteLock&lt;/span&gt;(_cacheLock))&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;return&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;Provider.Remove(key)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;}&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;return&amp;nbsp;null;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;}&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="darkgreen"&gt;//&amp;nbsp;Removes&amp;nbsp;the&amp;nbsp;specified&amp;nbsp;item&amp;nbsp;from&amp;nbsp;the&amp;nbsp;application&amp;#39;s&amp;nbsp;Cache&amp;nbsp;object.&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;public&amp;nbsp;static&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;T&amp;nbsp;Remove&amp;lt;T&amp;gt;(&lt;/font&gt;&lt;font color="blue"&gt;string&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;key)&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;return&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;(T)Remove(key)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;}&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="darkgreen"&gt;//&amp;nbsp;Retrieves&amp;nbsp;the&amp;nbsp;specified&amp;nbsp;item&amp;nbsp;from&amp;nbsp;the&amp;nbsp;Cache&amp;nbsp;object.&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;public&amp;nbsp;static&amp;nbsp;object&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;Read(&lt;/font&gt;&lt;font color="blue"&gt;string&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;key)&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;using&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;(&lt;/font&gt;&lt;font color="blue"&gt;new&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;&lt;span class="class"&gt;ReadOnlyLock&lt;/span&gt;(_cacheLock))&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;return&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;Provider.Read(key)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;}&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="darkgreen"&gt;//&amp;nbsp;Retrieves&amp;nbsp;the&amp;nbsp;specified&amp;nbsp;item&amp;nbsp;from&amp;nbsp;the&amp;nbsp;Cache&amp;nbsp;object&amp;nbsp;and&amp;nbsp;support&amp;nbsp;method&amp;nbsp;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;for&amp;nbsp;its&amp;nbsp;creation&amp;nbsp;if&amp;nbsp;it&amp;nbsp;is&amp;nbsp;not&amp;nbsp;presented&amp;nbsp;in&amp;nbsp;the&amp;nbsp;cache.&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;public&amp;nbsp;static&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;T&amp;nbsp;Read&amp;lt;T&amp;gt;(&lt;/font&gt;&lt;font color="blue"&gt;string&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;key,&amp;nbsp;Func&amp;lt;&lt;/font&gt;&lt;font color="blue"&gt;string&lt;/font&gt;&lt;font color="black"&gt;,&amp;nbsp;T&amp;gt;&amp;nbsp;onNull&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;null&lt;/font&gt;&lt;font color="black"&gt;)&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;using&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;(&lt;/font&gt;&lt;font color="blue"&gt;new&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;&lt;span class="class"&gt;ReadLock&lt;/span&gt;(_cacheLock))&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;object&amp;nbsp;value&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;Provider.Read(key)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;((&lt;/font&gt;&lt;font color="blue"&gt;value&amp;nbsp;==&amp;nbsp;null&lt;/font&gt;&lt;font color="black"&gt;)&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;(onNull&amp;nbsp;!&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;null&lt;/font&gt;&lt;font color="black"&gt;))&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;value&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;onNull(key)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;}&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;return&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;(&lt;/font&gt;&lt;font color="blue"&gt;value&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;!&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;null&lt;/font&gt;&lt;font color="black"&gt;)&amp;nbsp;?&amp;nbsp;(T)&lt;/font&gt;&lt;font color="blue"&gt;value&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;:&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;default&lt;/font&gt;&lt;font color="black"&gt;(T)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;}&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="darkgreen"&gt;//&amp;nbsp;Inserts&amp;nbsp;an&amp;nbsp;object&amp;nbsp;into&amp;nbsp;the&amp;nbsp;Cache&amp;nbsp;with&amp;nbsp;dependencies&amp;nbsp;and&amp;nbsp;expiration&amp;nbsp;policies.&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;public&amp;nbsp;static&amp;nbsp;object&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;Write(&lt;/font&gt;&lt;font color="blue"&gt;string&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;key,&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;object&amp;nbsp;value&lt;/font&gt;&lt;font color="black"&gt;,&amp;nbsp;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="class"&gt;DateTime&lt;/span&gt;?&amp;nbsp;absoluteExpiration&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;null&lt;/font&gt;&lt;font color="black"&gt;,&amp;nbsp;&lt;span class="class"&gt;TimeSpan&lt;/span&gt;?&amp;nbsp;slidingExpiration&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;null&lt;/font&gt;&lt;font color="black"&gt;)&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;using&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;(&lt;/font&gt;&lt;font color="blue"&gt;new&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;&lt;span class="class"&gt;WriteLock&lt;/span&gt;(_cacheLock))&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;if&lt;/font&gt;&lt;font color="black"&gt;(Provider.Contains(key))&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Provider.Remove(key)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;}&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;if&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;(absoluteExpiration&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;==&amp;nbsp;null&lt;/font&gt;&lt;font color="black"&gt;)&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;absoluteExpiration&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;&lt;span class="class"&gt;DateTime&lt;/span&gt;.UtcNow.AddMinutes(&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_duration.TotalMinutes)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;}&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;if&lt;/font&gt;&lt;font color="black"&gt;(slidingExpiration&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;==&amp;nbsp;null&lt;/font&gt;&lt;font color="black"&gt;)&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;slidingExpiration&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;&lt;span class="class"&gt;TimeSpan&lt;/span&gt;.Zero&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;}&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Provider.Write(key,&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;value&lt;/font&gt;&lt;font color="black"&gt;,&amp;nbsp;absoluteExpiration.Value,&amp;nbsp;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;slidingExpiration.Value)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;value;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;}&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="darkgreen"&gt;//&amp;nbsp;Inserts&amp;nbsp;an&amp;nbsp;object&amp;nbsp;into&amp;nbsp;the&amp;nbsp;Cache&amp;nbsp;with&amp;nbsp;dependencies&amp;nbsp;and&amp;nbsp;expiration&amp;nbsp;policies.&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;public&amp;nbsp;static&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;T&amp;nbsp;Write&amp;lt;T&amp;gt;(&lt;/font&gt;&lt;font color="blue"&gt;string&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;key,&amp;nbsp;T&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;value&lt;/font&gt;&lt;font color="black"&gt;,&amp;nbsp;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="class"&gt;DateTime&lt;/span&gt;?&amp;nbsp;absoluteExpiration&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;null&lt;/font&gt;&lt;font color="black"&gt;,&amp;nbsp;&lt;span class="class"&gt;TimeSpan&lt;/span&gt;?&amp;nbsp;slidingExpiration&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;null&lt;/font&gt;&lt;font color="black"&gt;)&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;using&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;(&lt;/font&gt;&lt;font color="blue"&gt;new&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;&lt;span class="class"&gt;WriteLock&lt;/span&gt;(_cacheLock))&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;if&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;(Provider.Contains(key))&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Provider.Remove(key)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;}&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;if&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;(absoluteExpiration&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;==&amp;nbsp;null&lt;/font&gt;&lt;font color="black"&gt;)&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;absoluteExpiration&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;&lt;span class="class"&gt;DateTime&lt;/span&gt;.UtcNow.AddMinutes(&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_duration.TotalMinutes)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;}&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;if&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;(slidingExpiration&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;==&amp;nbsp;null&lt;/font&gt;&lt;font color="black"&gt;)&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;slidingExpiration&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;&lt;span class="class"&gt;TimeSpan&lt;/span&gt;.Zero&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;}&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Provider.Write(key,&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;value&lt;/font&gt;&lt;font color="black"&gt;,&amp;nbsp;absoluteExpiration.Value,&amp;nbsp;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;slidingExpiration.Value)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;(T)&lt;/font&gt;&lt;font color="blue"&gt;value;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;}&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;#endregion&lt;br /&gt;
						&lt;/font&gt;&lt;font color="black"&gt;}&lt;/font&gt;
					&lt;/div&gt;
				&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
				&lt;th style="font-size:10px;font-family:Tahoma;"&gt;
					Cache Manager pre synchronizovaný prístup ku Cache
				&lt;/th&gt;
			&lt;/tr&gt;
		&lt;/table&gt;	
		&lt;p&gt;
			Ak nechceme, aby spomínaný druhý request musel zbytočne čakať na zámke celý čas potrebný pre načítanie dát z databázy pre prvý request, môžeme na základe implementácie 
			&lt;a href="http://blog.aspnet.sk/controlpanel/blogs/posteditor.aspx?SelectedNavItem=NewPost#cache-manager-pre-synchronizovany-pristup-ku-cache"&gt;Cache manager-a&lt;/a&gt; upraviť načítavanie údajov tak, ako je to uvedené v druhom 
			&lt;a href="http://blog.aspnet.sk/controlpanel/blogs/posteditor.aspx?SelectedNavItem=NewPost#nacitanie-dat-z-databazy-a-ulozenie-do-cache-2"&gt;príklade&lt;/a&gt;. Tým sa však opäť dostávame k problému číslo jedna - viacero paralelných načítaní tých istých dát.
		&lt;/p&gt;
		&lt;table style="width:100%;"&gt;
			&lt;tr&gt;
				&lt;td&gt;
					&lt;a class="" title="nacitanie-dat-z-databazy-a-ulozenie-do-cache-2" name="nacitanie-dat-z-databazy-a-ulozenie-do-cache-2"&gt;&lt;/a&gt;
					&lt;div class="code"&gt;
						&lt;font color="black"&gt;var&amp;nbsp;cacheVal&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;&lt;span class="class"&gt;Cache&lt;/span&gt;.Read&amp;lt;&lt;span class="class"&gt;SomeData&lt;/span&gt;&amp;gt;(&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;someKey&amp;quot;&lt;/font&gt;&lt;font color="black"&gt;)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						if&lt;/font&gt;&lt;font color="black"&gt;(cacheVal.Equals(&lt;span class="class"&gt;SomeData&lt;/span&gt;.Empty))&lt;br /&gt;
						{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cacheVal&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;SelectFromDb()&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;&lt;span class="class"&gt;Cache&lt;/span&gt;.Write(&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;someKey&amp;quot;&lt;/font&gt;&lt;font color="black"&gt;,&amp;nbsp;cacheVal,&amp;nbsp;&lt;span class="class"&gt;DateTime&lt;/span&gt;.UtcNow.AddSeconds(&lt;/font&gt;&lt;font color="maroon"&gt;60&lt;/font&gt;&lt;font color="black"&gt;))&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&lt;/font&gt;&lt;font color="black"&gt;}&lt;/font&gt;					
					&lt;/div&gt;
				&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
				&lt;th style="font-size:10px;font-family:Tahoma;"&gt;
					Načítanie dát z databázy a uloženie do Cache 2
				&lt;/th&gt;
			&lt;/tr&gt;
		&lt;/table&gt;		
		&lt;p&gt;
			V uvedených &lt;a href="http://blog.aspnet.sk/controlpanel/blogs/posteditor.aspx?SelectedNavItem=NewPost#nacitanie-dat-z-databazy-a-ulozenie-do-cache"&gt;príkladoch&lt;/a&gt; sa pre načítanie údajov z &lt;b&gt;Cache&lt;/b&gt; využíva &lt;a href="http://blog.aspnet.sk/controlpanel/blogs/posteditor.aspx?SelectedNavItem=Posts&amp;amp;sectionid=37&amp;amp;postid=307143#cache-manager-pre-synchronizovany-pristup-ku-cache"&gt;Cache manager&lt;/a&gt;
			implementovaný na základe &lt;a href="http://blog.joubin.ca/2008/10/provider-model-design-pattern.html" target="_blank"&gt;Provider model design pattern&lt;/a&gt;-u,
			čo umožňuje využiť na prácu s &lt;b&gt;Cache&lt;/b&gt; ľuboľného providera. Na synchronizáciu bola použitá trieda &lt;b&gt;ReaderWriterLockSlim&lt;/b&gt; spôsobom, ktorý je bližšie popísaný 
			&lt;a href="http://devplanet.com/blogs/brianr/archive/2008/09/29/thread-safe-dictionary-update.aspx" target="_blank"&gt;tu&lt;/a&gt;.
		&lt;/p&gt;
		&lt;p&gt;
			Myslím, že sa nedá jednoznačne povedať, že ak použijem &lt;b&gt;Cache&lt;/b&gt;, tak všetko bude zrazu zázračne rýchlo fungovať. A už vôbec nechcem tvrdiť, že najlepšie je použiť synchronizovanú &lt;b&gt;Cache&lt;/b&gt;, nakoľko
			tá prináša ešte väčšiu mieru komplexnosti. Najprv treba dobre zanalyzovať danú situáciu a zvážiť, aký spôsob použitia &lt;b&gt;Cache&lt;/b&gt;, a či vôbec, bude najvýhodnejší.
		&lt;/p&gt;
		&lt;script src="http://connect.facebook.net/en_US/all.js#xfbml=1"&gt;&lt;/script&gt;&lt;fb:like href="" show_faces="true" width="450" font=""&gt;&lt;/fb:like&gt;&lt;img src="http://blog.aspnet.sk/aggbug.aspx?PostID=307143" width="1" height="1"&gt;</description><category domain="http://blog.aspnet.sk/xxxmatko/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blog.aspnet.sk/xxxmatko/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blog.aspnet.sk/xxxmatko/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blog.aspnet.sk/xxxmatko/archive/tags/cache/default.aspx">cache</category><category domain="http://blog.aspnet.sk/xxxmatko/archive/tags/lock/default.aspx">lock</category><category domain="http://blog.aspnet.sk/xxxmatko/archive/tags/synchronization/default.aspx">synchronization</category></item><item><title>Ako dekódovať parametre WebResource.axd</title><link>http://blog.aspnet.sk/xxxmatko/archive/2012/03/07/ako-dek-243-dova-parametre-webresource-axd.aspx</link><pubDate>Wed, 07 Mar 2012 09:25:00 GMT</pubDate><guid isPermaLink="false">cbdfeddd-8b45-43cb-b10b-361e40cba84b:307139</guid><dc:creator>xxxmatko</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blog.aspnet.sk/xxxmatko/rsscomments.aspx?PostID=307139</wfw:commentRss><comments>http://blog.aspnet.sk/xxxmatko/archive/2012/03/07/ako-dek-243-dova-parametre-webresource-axd.aspx#comments</comments><description>		&lt;p&gt;
			Keď som naposledy pozeral logy z jednej webovej aplikácie, našiel som tam niekoľko zalogovaných výnimiek typu &lt;b&gt;System.Web.HttpException (0x80004005): This is an invalid webresource request&lt;/b&gt;, no a
			samozrejme url adresa mala tvar &amp;#39;http://localhost:52537/WebResource.axd?d=OnZ0ZKO8G-ShpiVSqxXhboYJFcDQ82xG0pBI7kczDAPkL0g3SuGYm0JoMUL8LF8trZ9NVkaa71WbfQraAN2i0CbvOUX8m4vHoP_haITnn8hPhs5H8SljR5k4llviy4QoLvzWvyDrnM7NJCsXC6W6oNGW26D73FFlOsdldHUEF8c1&amp;amp;t=634656035472024300&amp;#39;.
			Z toho som samozrejme na prvý pohľad nič úžasné nezistil. To ma viedlo k tomu, že by bolo lepšie, keby do logu išla aj url adresa pre webresource s dekódovanými url parametrami, pre ľahšiu identifikáciu requestu.
		&lt;/p&gt;
		&lt;p&gt;
			Pomocou dômyselných nástrojov nebolo ťažké zistiť, že na dešifrovanie parametrov &lt;b&gt;AssemblyResourceLoader&lt;/b&gt; využíva statickú metódú &lt;b&gt;DecryptString&lt;/b&gt; objektu &lt;b&gt;System.Web.UI.Page&lt;/b&gt;, ktorá interne využíva metódu 
			&lt;b&gt;MachineKeySection.EncryptOrDecryptData&lt;/b&gt;. Táto metóda je síce označená ako &lt;b&gt;internal&lt;/b&gt;, ale to predsa nie je problém, veď máme &lt;b&gt;Reflection&lt;/b&gt; ;-).
		&lt;/p&gt;
		&lt;table style="width:100%;"&gt;
			&lt;tr&gt;
				&lt;td&gt;
					&lt;div class="code"&gt;
						&lt;font color="blue"&gt;public&amp;nbsp;static&amp;nbsp;byte&lt;/font&gt;&lt;font color="black"&gt;[]&amp;nbsp;EncryptOrDecryptData(&lt;/font&gt;&lt;font color="blue"&gt;bool&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;encrypt,&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;byte&lt;/font&gt;&lt;font color="black"&gt;[]&amp;nbsp;data,&amp;nbsp;&lt;/font&gt;
						&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="blue"&gt;byte&lt;/font&gt;&lt;font color="black"&gt;[]&amp;nbsp;modifier,&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;int&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;start,&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;int&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;length)&lt;br /&gt;
						{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="class"&gt;MethodInfo&lt;/span&gt;&amp;nbsp;encryptOrDecryptStringMethod&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;null;&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;var&amp;nbsp;machineKeySection&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;typeof&lt;/font&gt;&lt;font color="black"&gt;(&lt;span class="class"&gt;MachineKeySection&lt;/span&gt;)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;var&amp;nbsp;paramTypes&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;new&lt;/font&gt;&lt;font color="black"&gt;[]&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;typeof&lt;/font&gt;&lt;font color="black"&gt;(&lt;/font&gt;&lt;font color="blue"&gt;bool&lt;/font&gt;&lt;font color="black"&gt;),&amp;nbsp;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;typeof&lt;/font&gt;&lt;font color="black"&gt;(&lt;/font&gt;&lt;font color="blue"&gt;byte&lt;/font&gt;&lt;font color="black"&gt;[]),&amp;nbsp;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;typeof&lt;/font&gt;&lt;font color="black"&gt;(&lt;/font&gt;&lt;font color="blue"&gt;byte&lt;/font&gt;&lt;font color="black"&gt;[]),&amp;nbsp;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;typeof&lt;/font&gt;&lt;font color="black"&gt;(&lt;/font&gt;&lt;font color="blue"&gt;int&lt;/font&gt;&lt;font color="black"&gt;),&amp;nbsp;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;typeof&lt;/font&gt;&lt;font color="black"&gt;(&lt;/font&gt;&lt;font color="blue"&gt;int&lt;/font&gt;&lt;font color="black"&gt;)&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;encryptOrDecryptStringMethod&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;machineKeySection.GetMethod(&lt;/font&gt;&lt;font style="font-size:10px;" color="#808080"&gt;&amp;quot;EncryptOrDecryptData&amp;quot;&lt;/font&gt;&lt;font color="black"&gt;,&amp;nbsp;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="class"&gt;BindingFlags&lt;/span&gt;.Static&amp;nbsp;|&amp;nbsp;&lt;span class="class"&gt;BindingFlags&lt;/span&gt;.NonPublic,&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;null&lt;/font&gt;&lt;font color="black"&gt;,&amp;nbsp;paramTypes,&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;null&lt;/font&gt;&lt;font color="black"&gt;)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;(&lt;/font&gt;&lt;font color="blue"&gt;byte&lt;/font&gt;&lt;font color="black"&gt;[])encryptOrDecryptStringMethod.Invoke(&lt;/font&gt;&lt;font color="blue"&gt;null&lt;/font&gt;&lt;font color="black"&gt;,&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;new&amp;nbsp;object&lt;/font&gt;&lt;font color="black"&gt;[]&amp;nbsp;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&amp;nbsp;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;encrypt,&amp;nbsp;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;data,&amp;nbsp;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;modifier,&amp;nbsp;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;start,&amp;nbsp;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;length&amp;nbsp;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;})&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&lt;/font&gt;&lt;font color="black"&gt;}&lt;/font&gt;					
					&lt;/div&gt;
				&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
				&lt;th style="font-size:10px;font-family:Tahoma;"&gt;
					Implementovanie metódy pre šifrovanie a dešifrovanie dát s využítím Reflection
				&lt;/th&gt;
			&lt;/tr&gt;
		&lt;/table&gt;
		&lt;p&gt;
			Táto implementácia má však jeden háčik. Môže sa totiž stať, že nebude môžné získať handle na danú metódu pomocou &lt;b&gt;Reflection&lt;/b&gt; z rôznych dôvodov. Prístup kú šifrovacím metódam môžeme získať ale
			aj tým, že implementujeme taký kvázi &lt;b&gt;MembershipProvider&lt;/b&gt;, v rámci ktorého môžeme využiť metódy &lt;b&gt;EncryptPassword&lt;/b&gt; a &lt;b&gt;DecryptPassword&lt;/b&gt;, ktoré na šifrovanie a dešifrovanie používajú tiež 
			&lt;b&gt;MachineKey&lt;/b&gt; a teda ich môžeme použiť na dešifrovanie url parametrov bez nutnosti použitia &lt;b&gt;Reflection&lt;/b&gt;.
		&lt;/p&gt;
		&lt;table style="width:100%;"&gt;
			&lt;tr&gt;
				&lt;td&gt;
					&lt;div class="code"&gt;
						&lt;font color="blue"&gt;public&amp;nbsp;class&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;&lt;span class="class"&gt;EmptyMembership&lt;/span&gt;&amp;nbsp;:&amp;nbsp;&lt;span class="class"&gt;MembershipProvider&lt;/span&gt;&lt;br /&gt;
						{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;private&amp;nbsp;static&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;&lt;span class="class"&gt;EmptyMembership&lt;/span&gt;&amp;nbsp;_instance&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;EmptyMembership()&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;public&amp;nbsp;static&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;&lt;span class="class"&gt;EmptyMembership&lt;/span&gt;&amp;nbsp;Instance&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;get&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;return&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;_instance&amp;nbsp;??&amp;nbsp;(_instance&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;new&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;&lt;span class="class"&gt;EmptyMembership&lt;/span&gt;())&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;}&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;public&amp;nbsp;byte&lt;/font&gt;&lt;font color="black"&gt;[]&amp;nbsp;DecryptData(&lt;/font&gt;&lt;font color="blue"&gt;byte&lt;/font&gt;&lt;font color="black"&gt;[]&amp;nbsp;data)&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;return&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;DecryptPassword(data)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;}&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;public&amp;nbsp;byte&lt;/font&gt;&lt;font color="black"&gt;[]&amp;nbsp;EncryptData(&lt;/font&gt;&lt;font color="blue"&gt;byte&lt;/font&gt;&lt;font color="black"&gt;[]&amp;nbsp;data)&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;return&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;EncryptPassword(data)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;}&lt;br /&gt;
						}&lt;/font&gt;		
					&lt;/div&gt;
				&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
				&lt;th style="font-size:10px;font-family:Tahoma;"&gt;
					Prázdny MemberShipProvider (implementácia ostatných metód a vlastností je vynechaná)
				&lt;/th&gt;
			&lt;/tr&gt;
		&lt;/table&gt;		
		&lt;p&gt;
			Potom môžeme našu šifrovaciu metódu upraviť nasledovne:
		&lt;/p&gt;
		&lt;table style="width:100%;"&gt;
			&lt;tr&gt;
				&lt;td&gt;
					&lt;div class="code"&gt;
						&lt;font color="blue"&gt;public&amp;nbsp;static&amp;nbsp;byte&lt;/font&gt;&lt;font color="black"&gt;[]&amp;nbsp;EncryptOrDecryptData(&lt;/font&gt;&lt;font color="blue"&gt;bool&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;encrypt,&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;byte&lt;/font&gt;&lt;font color="black"&gt;[]&amp;nbsp;data,&amp;nbsp;&lt;/font&gt;
						&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="blue"&gt;byte&lt;/font&gt;&lt;font color="black"&gt;[]&amp;nbsp;modifier,&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;int&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;start,&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;int&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;length)&lt;br /&gt;
						{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="class"&gt;MethodInfo&lt;/span&gt;&amp;nbsp;encryptOrDecryptStringMethod&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;null;&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;try&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var&amp;nbsp;machineKeySection&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;typeof&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;(&lt;span class="class"&gt;MachineKeySection&lt;/span&gt;)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;var&amp;nbsp;paramTypes&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;new&lt;/font&gt;&lt;font color="black"&gt;[]&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;typeof&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;(&lt;/font&gt;&lt;font color="blue"&gt;bool&lt;/font&gt;&lt;font color="black"&gt;),&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;typeof&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;(&lt;/font&gt;&lt;font color="blue"&gt;byte&lt;/font&gt;&lt;font color="black"&gt;[]),&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;typeof&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;(&lt;/font&gt;&lt;font color="blue"&gt;byte&lt;/font&gt;&lt;font color="black"&gt;[]),&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;typeof&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;(&lt;/font&gt;&lt;font color="blue"&gt;int&lt;/font&gt;&lt;font color="black"&gt;),&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;typeof&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;(&lt;/font&gt;&lt;font color="blue"&gt;int&lt;/font&gt;&lt;font color="black"&gt;)&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;encryptOrDecryptStringMethod&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;&lt;/font&gt;
						&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="black"&gt;machineKeySection.GetMethod(&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;EncryptOrDecryptData&amp;quot;&lt;/font&gt;&lt;font color="black"&gt;,&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="class"&gt;BindingFlags&lt;/span&gt;.Static&amp;nbsp;|&amp;nbsp;&lt;span class="class"&gt;BindingFlags&lt;/span&gt;.NonPublic,&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;null&lt;/font&gt;&lt;font color="black"&gt;,&amp;nbsp;paramTypes,&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="blue"&gt;null&lt;/font&gt;&lt;font color="black"&gt;)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;}&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;catch&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;(&lt;span class="class"&gt;AmbiguousMatchException&lt;/span&gt;)&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="darkgreen"&gt;//&amp;nbsp;Reflection&amp;nbsp;is&amp;nbsp;not&amp;nbsp;allowed&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;}&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;if&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;(encryptOrDecryptStringMethod&amp;nbsp;!&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;null&lt;/font&gt;&lt;font color="black"&gt;)&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;try&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;return&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;(&lt;/font&gt;&lt;font color="blue"&gt;byte&lt;/font&gt;&lt;font color="black"&gt;[])encryptOrDecryptStringMethod.Invoke(&lt;/font&gt;&lt;font color="blue"&gt;null&lt;/font&gt;&lt;font color="black"&gt;,&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;new&amp;nbsp;object&lt;/font&gt;&lt;font color="black"&gt;[]&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;encrypt,&amp;nbsp;data,&amp;nbsp;modifier,&amp;nbsp;start,&amp;nbsp;length&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;})&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;}&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;catch&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;(&lt;span class="class"&gt;MethodAccessException&lt;/span&gt;)&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;return&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;encrypt&amp;nbsp;?&amp;nbsp;&lt;span class="class"&gt;EmptyMembership&lt;/span&gt;.Instance.EncryptData(data)&amp;nbsp;:&amp;nbsp;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="class"&gt;EmptyMembership&lt;/span&gt;.Instance.DecryptData(data)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;}&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;catch&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;(&lt;span class="class"&gt;TargetInvocationException&lt;/span&gt;)&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;return&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;encrypt&amp;nbsp;?&amp;nbsp;&lt;span class="class"&gt;EmptyMembership&lt;/span&gt;.Instance.EncryptData(data)&amp;nbsp;:&amp;nbsp;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="class"&gt;EmptyMembership&lt;/span&gt;.Instance.DecryptData(data)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;}&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;return&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;encrypt&amp;nbsp;?&amp;nbsp;&lt;span class="class"&gt;EmptyMembership&lt;/span&gt;.Instance.EncryptData(data)&amp;nbsp;:&amp;nbsp;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="class"&gt;EmptyMembership&lt;/span&gt;.Instance.DecryptData(data)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&lt;/font&gt;&lt;font color="black"&gt;}&lt;/font&gt;	
					&lt;/div&gt;
				&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
				&lt;th style="font-size:10px;font-family:Tahoma;"&gt;
					Doplnená šifrovacia metóda
				&lt;/th&gt;
			&lt;/tr&gt;
		&lt;/table&gt;	
		&lt;p&gt;
			Už ostáva toto celé len pekne zaobaliť:
		&lt;/p&gt;
		&lt;table style="width:100%;"&gt;
			&lt;tr&gt;
				&lt;td&gt;
					&lt;div class="code"&gt;
						&lt;font color="blue"&gt;public&amp;nbsp;static&amp;nbsp;string&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;DecryptString(&lt;/font&gt;&lt;font color="blue"&gt;string&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;data,&amp;nbsp;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="class"&gt;Func&lt;/span&gt;&amp;lt;&lt;/font&gt;&lt;font color="blue"&gt;string&lt;/font&gt;&lt;font color="black"&gt;,&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;byte&lt;/font&gt;&lt;font color="black"&gt;[]&amp;gt;&amp;nbsp;stringToByteArray&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;null&lt;/font&gt;&lt;font color="black"&gt;,&amp;nbsp;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="class"&gt;Func&lt;/span&gt;&amp;lt;&lt;/font&gt;&lt;font color="blue"&gt;byte&lt;/font&gt;&lt;font color="black"&gt;[],&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;string&lt;/font&gt;&lt;font color="black"&gt;&amp;gt;&amp;nbsp;byteArrayToString&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;null&lt;/font&gt;&lt;font color="black"&gt;)&lt;br /&gt;
						{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;byte&lt;/font&gt;&lt;font color="black"&gt;[]&amp;nbsp;dataToDecrypt&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;(stringToByteArray&amp;nbsp;!&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;null&lt;/font&gt;&lt;font color="black"&gt;)&amp;nbsp;?&amp;nbsp;stringToByteArray(data)&amp;nbsp;:&amp;nbsp;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="class"&gt;Encoding&lt;/span&gt;.UTF8.GetBytes(data)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;byte&lt;/font&gt;&lt;font color="black"&gt;[]&amp;nbsp;decryptedData&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;EncryptOrDecryptData(&lt;/font&gt;&lt;font color="blue"&gt;false&lt;/font&gt;&lt;font color="black"&gt;,&amp;nbsp;dataToDecrypt,&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;null&lt;/font&gt;&lt;font color="black"&gt;,&amp;nbsp;&lt;/font&gt;&lt;font color="maroon"&gt;0&lt;/font&gt;&lt;font color="black"&gt;,&amp;nbsp;
						&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dataToDecrypt.Length)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;(byteArrayToString&amp;nbsp;!&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;null&lt;/font&gt;&lt;font color="black"&gt;)&amp;nbsp;?&amp;nbsp;byteArrayToString(decryptedData)&amp;nbsp;:&amp;nbsp;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="class"&gt;Encoding&lt;/span&gt;.UTF8.GetString(decryptedData)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&lt;/font&gt;&lt;font color="black"&gt;}&lt;br /&gt;
						&lt;br /&gt;
						&lt;/font&gt;&lt;font color="blue"&gt;public&amp;nbsp;static&amp;nbsp;string&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;EncryptString(&lt;/font&gt;&lt;font color="blue"&gt;string&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;data,&amp;nbsp;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="class"&gt;Func&lt;/span&gt;&amp;lt;&lt;/font&gt;&lt;font color="blue"&gt;string&lt;/font&gt;&lt;font color="black"&gt;,&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;byte&lt;/font&gt;&lt;font color="black"&gt;[]&amp;gt;&amp;nbsp;stringToByteArray&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;null&lt;/font&gt;&lt;font color="black"&gt;,&amp;nbsp;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="class"&gt;Func&lt;/span&gt;&amp;lt;&lt;/font&gt;&lt;font color="blue"&gt;byte&lt;/font&gt;&lt;font color="black"&gt;[],&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;string&lt;/font&gt;&lt;font color="black"&gt;&amp;gt;&amp;nbsp;byteArrayToString&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;null&lt;/font&gt;&lt;font color="black"&gt;)&lt;br /&gt;
						{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;byte&lt;/font&gt;&lt;font color="black"&gt;[]&amp;nbsp;dataToEncrypt&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;(stringToByteArray&amp;nbsp;!&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;null&lt;/font&gt;&lt;font color="black"&gt;)&amp;nbsp;?&amp;nbsp;stringToByteArray(data)&amp;nbsp;:&amp;nbsp;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="class"&gt;Encoding&lt;/span&gt;.UTF8.GetBytes(data)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;byte&lt;/font&gt;&lt;font color="black"&gt;[]&amp;nbsp;encryptedData&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;EncryptOrDecryptData(&lt;/font&gt;&lt;font color="blue"&gt;true&lt;/font&gt;&lt;font color="black"&gt;,&amp;nbsp;
						&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dataToEncrypt,&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;null&lt;/font&gt;&lt;font color="black"&gt;,&amp;nbsp;&lt;/font&gt;&lt;font color="maroon"&gt;0&lt;/font&gt;&lt;font color="black"&gt;,&amp;nbsp;dataToEncrypt.Length)&lt;/font&gt;&lt;font color="blue"&gt;;&amp;nbsp;&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;(byteArrayToString&amp;nbsp;!&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;null&lt;/font&gt;&lt;font color="black"&gt;)&amp;nbsp;?&amp;nbsp;byteArrayToString(encryptedData)&amp;nbsp;:&amp;nbsp;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="class"&gt;Encoding&lt;/span&gt;.UTF8.GetString(encryptedData)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&lt;/font&gt;&lt;font color="black"&gt;}&lt;/font&gt;
					&lt;/div&gt;
				&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
				&lt;th style="font-size:10px;font-family:Tahoma;"&gt;
					Implementácia metód pre šifrovanie a dešifrovanie
				&lt;/th&gt;
			&lt;/tr&gt;
		&lt;/table&gt;
		&lt;p&gt;
			Dekódovať zašifrovaný query string môžeme potom nasledovne:
		&lt;/p&gt;
		&lt;table style="width:100%;"&gt;
			&lt;tr&gt;
				&lt;td&gt;
					&lt;div class="code"&gt;
						&lt;font color="blue"&gt;string&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;dQuery&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;&lt;/font&gt;&lt;font color="#808080"&gt;@&amp;quot;1xskcOcQ5gDA9hwnmk1rYdW_bAWTiJFuj5Lw-Gfggz3AouwcBQyngWNkhtnlv6sDDogR6JWmjyuz5FxMjLzPzIQyRa34X1ChGd7bvzGwhOk3f_67WdDrVmpS87AY1ZuYVYpQk8-Z7b8pEGKZrWg-ucm0aFOdbb5hdb7hD15Hh5s1&amp;quot;&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						string&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;decrypted&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;DecryptString(dQuery,&amp;nbsp;&lt;span class="class"&gt;HttpServerUtility&lt;/span&gt;.UrlTokenDecode)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;/font&gt;
					&lt;/div&gt;
				&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
				&lt;th style="font-size:10px;font-family:Tahoma;"&gt;
					Použitie dešifrovacej metódy na dešifrovanie query stringu WebResource.axd
				&lt;/th&gt;
			&lt;/tr&gt;
		&lt;/table&gt;	
		&lt;p&gt;
			PS: Uvítam každý návrh na vylepšenie.
		&lt;/p&gt;
		&lt;script src="http://connect.facebook.net/en_US/all.js#xfbml=1"&gt;&lt;/script&gt;&lt;fb:like href="" show_faces="true" width="450" font=""&gt;&lt;/fb:like&gt;&lt;img src="http://blog.aspnet.sk/aggbug.aspx?PostID=307139" width="1" height="1"&gt;</description><category domain="http://blog.aspnet.sk/xxxmatko/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blog.aspnet.sk/xxxmatko/archive/tags/C_2300_/default.aspx">C#</category></item><item><title>dojo.require anything</title><link>http://blog.aspnet.sk/xxxmatko/archive/2012/02/29/dojo-require-anything.aspx</link><pubDate>Wed, 29 Feb 2012 12:10:00 GMT</pubDate><guid isPermaLink="false">cbdfeddd-8b45-43cb-b10b-361e40cba84b:307120</guid><dc:creator>xxxmatko</dc:creator><slash:comments>14</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blog.aspnet.sk/xxxmatko/rsscomments.aspx?PostID=307120</wfw:commentRss><comments>http://blog.aspnet.sk/xxxmatko/archive/2012/02/29/dojo-require-anything.aspx#comments</comments><description>		
&lt;p&gt;
			Ten, kto sa už niekedy stretol s javascript-ovým frameworkom &lt;b&gt;&lt;a href="http://dojotoolkit.org/api/" target="_blank"&gt;dojo&lt;/a&gt;&lt;/b&gt; vie, že umožňuje vytvárať
			kvázi triedy pomocou metódy &lt;b&gt;dojo.declare&lt;/b&gt; a tieto združovať do kvázi namespace-ov skrz metódu &lt;b&gt;dojo.provide&lt;/b&gt;. Každá takáto trieda predstavuje
			jeden javascript-ový súbor a kvázi namespace, do ktorého je táto trieda zaradená, určuje adresárovú štruktúru, v rámci ktorej sa táto trieda nachádza. 
			Následne potom môžeme využívať kvázi &lt;b&gt;using&lt;/b&gt; implementovaný pomocou metódy &lt;b&gt;dojo.require&lt;/b&gt; pre pripojenie javascript-ov do stránky namiesto
			pripájania jednotlivých javascript-ových súborov pomocu html elementu &lt;b&gt;&amp;lt;script&amp;gt;&lt;/b&gt;.
		&lt;/p&gt;
		
&lt;table style="width:100%;"&gt;
			
&lt;tr&gt;
				
&lt;td&gt;
					&lt;div class="code"&gt;
						&lt;font color="black"&gt;dojo.provide(&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;Widgets.Parent&amp;quot;&lt;/font&gt;&lt;font color="black"&gt;)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&lt;br /&gt;
						&lt;/font&gt;&lt;font color="black"&gt;dojo.require(&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;dijit._Widget&amp;quot;&lt;/font&gt;&lt;font color="black"&gt;)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&lt;/font&gt;&lt;font color="black"&gt;dojo.require(&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;Widgets.Child1&amp;quot;&lt;/font&gt;&lt;font color="black"&gt;)&lt;/font&gt;&lt;sup style="color:red;font-weight:bold;"&gt;1&lt;/sup&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&lt;/font&gt;&lt;font color="black"&gt;dojo.require(&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;Widgets.Child2&amp;quot;&lt;/font&gt;&lt;font color="black"&gt;)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&lt;br /&gt;
						&lt;/font&gt;&lt;font color="black"&gt;dojo.declare(&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;Widgets.Parent&amp;quot;&lt;/font&gt;&lt;font color="black"&gt;&lt;sup style="color:red;font-weight:bold;"&gt;2&lt;/sup&gt;,&amp;nbsp;[dijit._Widget]&lt;sup style="color:red;font-weight:bold;"&gt;3&lt;/sup&gt;,&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;constructor:&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;function&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;(args,&amp;nbsp;srcNodeRef)&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;buildRendering:&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;function&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;()&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;postCreate:&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;function&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;()&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
						})&lt;/font&gt;&lt;font color="blue"&gt;;&lt;/font&gt;
					&lt;/div&gt;
				&lt;/td&gt;
			&lt;/tr&gt;
			
&lt;tr&gt;
				&lt;th style="font-size:10px;font-family:Tahoma;"&gt;
					Príklad jednoduchého widgetu
				&lt;/th&gt;
			&lt;/tr&gt;
		&lt;/table&gt;
	
		
&lt;p&gt;
			V ukážke je implementovaná trieda &lt;b&gt;Widgets.Parent&lt;/b&gt; (&lt;sup style="color:red;font-weight:bold;"&gt;2&lt;/sup&gt;), ktorá dedí z triedy &lt;b&gt;dijit._Widget&lt;/b&gt;(&lt;sup style="color:red;font-weight:bold;"&gt;3&lt;/sup&gt;)
			a &amp;quot;vyžaduje&amp;quot; ďalšie triedy &lt;b&gt;Widgets.Child1&lt;/b&gt;, &lt;b&gt;Widgets.Child2&lt;/b&gt; (&lt;sup style="color:red;font-weight:bold;"&gt;1&lt;/sup&gt;). Na akom princípe funguje volanie &lt;b&gt;dojo.require&lt;/b&gt;? Na to, aby sme 
			mohli použiť &lt;b&gt;dojo&lt;/b&gt; framework, musíme ho na stránke referencovať. Nič prevratné. Povedzme, že ho referencujem z adresy &lt;b&gt;&amp;quot;http://nejakaadreas.sk/dojo/dojo.js&amp;quot;&lt;/b&gt;. Na základe tejto adresy sa konfiguračná
			property &lt;b&gt;basePath&lt;/b&gt; objektu &lt;b&gt;djConfig&lt;/b&gt; (základná cesta kde je umiestnené dojo core) nastaví na hodnotu &amp;quot;/dojo/&amp;quot;. Volanie metódy &lt;b&gt;dojo.require(&amp;quot;Widgets.Child2&amp;quot;)&lt;/b&gt; na základe
			uvedených konfiguračných hodnôt sa pomocou GET requestu pokúsí stiahnuť skript z adresy &lt;b&gt;&amp;quot;http://nejakaadreas.sk/dojo/Widgets/Child2.js&amp;quot;&lt;/b&gt;. Ak však nechceme, aby sa naše triedy
			nachádzali v tom istom priečinku ako &lt;b&gt;dojo&lt;/b&gt; core, možeme definovať umietnenia custom tried (respektíve modulov) pomocou metódy &lt;b&gt;dojo.registerModulePath(&amp;quot;&amp;lt;moduleName&amp;gt;&amp;quot;, &amp;quot;&amp;lt;modulePath&amp;gt;&amp;quot;)&lt;/b&gt;,
			alebo ešte lepšie pomocou property &lt;b&gt;paths&lt;/b&gt; objektu &lt;b&gt;djConfig&lt;/b&gt; (v starších verziách dojo frameworku sa používala property &lt;b&gt;modulePaths&lt;/b&gt;). 
		&lt;/p&gt;
		
&lt;table style="width:100%;"&gt;
			
&lt;tr&gt;
				
&lt;td&gt;
					&lt;div class="code"&gt;
						&lt;font color="blue"&gt;var&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;djConfig&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;paths:&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Widgets:&amp;nbsp;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;/custom/Widgets&amp;quot;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;}&lt;br /&gt;
						}&lt;/font&gt;&lt;font color="blue"&gt;;&lt;/font&gt;	
					&lt;/div&gt;
				&lt;/td&gt;
			&lt;/tr&gt;
			
&lt;tr&gt;
				&lt;th style="font-size:10px;font-family:Tahoma;"&gt;
					Nastavenie umiestnenia custom moduolov
				&lt;/th&gt;
			&lt;/tr&gt;
		&lt;/table&gt;
		
		
&lt;p&gt;
			S vyššie uvedenou konfiguráciou volanie metódy &lt;b&gt;dojo.require(&amp;quot;Widgets.Child2&amp;quot;)&lt;/b&gt; sa pomocou GET requestu pokúsí stiahnuť skript z adresy &lt;b&gt;&amp;quot;http://nejakaadreas.sk/custom/Widgets/Child2.js&amp;quot;&lt;/b&gt;.
			Pri definovaní cesty pre custom moduly je táto cesta relatívna k parent priečinku, v ktorom sa nachádza &lt;b&gt;dojo&lt;/b&gt; core.
		&lt;/p&gt;
		
&lt;p&gt;
			Neznamená to však, že teraz všetky naše custom moduly/triedy musia byť umiestnené
			v tej istej lokalite ako aj samotné &lt;b&gt;dojo&lt;/b&gt; alebo, že musíme mať &lt;b&gt;dojo&lt;/b&gt; umiestnené vždy v rámci samotnej webovej aplikácie. Cesta pre custom moduly môže byť reprezentovaná aj kompletnou
			url adresou. A konečne sa dostávame k meritu veci. Majme v webovú aplikáciu. Táto webová aplikácia referencuje knižnicu, v ktorej sú implementované server ovládacie prvky (server controls). 
			Každý server control pozostáva zo server kódu, ktorý je zodpovedný za vyrenderovanie požadovaného html a inicializáciu dojo widgetu pre vyrenderovaný html kód. Javascript kód widgetu (tak ako je uvedený
			v prvej ukážke) sa nachádza ako &lt;b&gt;Embedded Resource&lt;/b&gt; v rámci referencovanej dynamickej knižnice.
		&lt;/p&gt;
		
&lt;table style="width:100%;"&gt;
			
&lt;tr&gt;
				
&lt;td&gt;
					&lt;div class="code"&gt;
						
&lt;ul&gt;
							
&lt;li class="solutionIcon"&gt;
								Solution
								
&lt;ul&gt;
									
&lt;li class="folderIcon"&gt;
										WebApp
									&lt;/li&gt;
									
&lt;li class="folderIcon"&gt;
										Custom
										
&lt;ul&gt;
											
&lt;li class="folderIcon"&gt;
												UI
												
&lt;ul&gt;
													
&lt;li class="folderIcon"&gt;
														WebControls
														
&lt;ul&gt;
															
&lt;li class="folderIcon"&gt;
																Widgets
																
&lt;ul&gt;
																	
&lt;li class="folderIcon"&gt;
																		Parent
																		
&lt;ul&gt;
																			
&lt;li class="csharpIcon"&gt;
																				Parent.cs
																			&lt;/li&gt;
																			
&lt;li class="jsIcon"&gt;
																				Parent.js
																			&lt;/li&gt;
																		&lt;/ul&gt;
																	&lt;/li&gt;
																	
&lt;li class="folderIcon"&gt;
																		Child1
																		
&lt;ul&gt;
																			
&lt;li class="csharpIcon"&gt;
																				Child1.cs
																			&lt;/li&gt;
																			
&lt;li class="jsIcon"&gt;
																				Child1.js
																			&lt;/li&gt;
																		&lt;/ul&gt;
																	&lt;/li&gt;
																	
&lt;li class="folderIcon"&gt;
																		Child2
																		
&lt;ul&gt;
																			
&lt;li class="csharpIcon"&gt;
																				Child2.cs
																			&lt;/li&gt;
																			
&lt;li class="jsIcon"&gt;
																				Child2.js
																			&lt;/li&gt;
																		&lt;/ul&gt;
																	&lt;/li&gt;
																&lt;/ul&gt;
															&lt;/li&gt;
														&lt;/ul&gt;
													&lt;/li&gt;
												&lt;/ul&gt;
											&lt;/li&gt;
										&lt;/ul&gt;
									&lt;/li&gt;
								&lt;/ul&gt;
							&lt;/li&gt;
						&lt;/ul&gt;
					&lt;/div&gt;
				&lt;/td&gt;
			&lt;/tr&gt;
			
&lt;tr&gt;
				&lt;th style="font-size:10px;font-family:Tahoma;"&gt;
					Štruktúra ukážkového projektu
				&lt;/th&gt;
			&lt;/tr&gt;
		&lt;/table&gt;
	
		
&lt;p&gt;
			Ak by sme sa teraz pokúsili vytvoriť na stránke widget (tak ako je to uvedené v nasledovnej ukážke), tak by sme neuspeli, pretože volanie &lt;b&gt;dojo.require(&amp;quot;Widgets.Parent&amp;quot;)&lt;/b&gt; zlyhá, nakoľko javascript kód
			widgetu &amp;quot;Parent&amp;quot; sa nenechádza na adrese &lt;b&gt;&amp;quot;http://localhost:#####/dojo/Widgets/Parent.js&amp;quot;&lt;/b&gt;, ale dá sa načítať cez handler &amp;quot;WebResource.axd&amp;quot;. Jednou možnosťou, ako sa s danou situáciou vysporiadať,
			je to, že pred vyrenderovaním stránky vložíme do nej referencie na všetky potrebné skripty pomocu metód &amp;quot;RegisterClientScriptInclude&amp;quot; a &amp;quot;GetWebResourceUrl&amp;quot;.
		&lt;/p&gt;
		
&lt;table style="width:100%;"&gt;
			
&lt;tr&gt;
				
&lt;td&gt;
					&lt;div class="code"&gt;
						&lt;font color="blue"&gt;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;html&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;head&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;script&lt;/font&gt;&lt;font color="red"&gt;&amp;nbsp;type&lt;/font&gt;&lt;font color="blue"&gt;=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;var&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;djConfig&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;paths:&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Widgets:&amp;nbsp;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;/Widgets&amp;quot;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;}&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;/font&gt;&lt;font color="maroon"&gt;script&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;script&lt;/font&gt;&lt;font color="red"&gt;&amp;nbsp;type&lt;/font&gt;&lt;font color="blue"&gt;=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dojo.require(&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;dojo.parser&amp;quot;&lt;/font&gt;&lt;font color="black"&gt;)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;dojo.require(&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;Widgets.Parent&amp;quot;&lt;/font&gt;&lt;font color="black"&gt;)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;dojo.addOnLoad(&lt;/font&gt;&lt;font color="blue"&gt;function&lt;/font&gt;&lt;font color="black"&gt;()&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;var&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;parent&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;new&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;Widgets.Parent({&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="darkgreen"&gt;//&amp;nbsp;input&amp;nbsp;params&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;},&amp;nbsp;dojo.byId(&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;parent&amp;quot;&lt;/font&gt;&lt;font color="black"&gt;))&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;})&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;/font&gt;&lt;font color="maroon"&gt;script&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="maroon"&gt;head&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;body&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;div&lt;/font&gt;&lt;font color="red"&gt;&amp;nbsp;id&lt;/font&gt;&lt;font color="blue"&gt;=&amp;quot;parent&amp;quot;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="maroon"&gt;div&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="maroon"&gt;body&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
						&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="maroon"&gt;html&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;/font&gt;
					&lt;/div&gt;
				&lt;/td&gt;
			&lt;/tr&gt;
			
&lt;tr&gt;
				&lt;th style="font-size:10px;font-family:Tahoma;"&gt;
					Inicializá widgetu &amp;quot;Parent&amp;quot;
				&lt;/th&gt;
			&lt;/tr&gt;
		&lt;/table&gt;
			
		
&lt;p&gt;
			Toto riešenie ale nie je optimálne a tak isto stráca sa funkčnosť volania &lt;b&gt;dojo.require&lt;/b&gt;. V tomto prípade skončíme s tromi chybnými requestami typu &amp;quot;Not Found&amp;quot; pre javascriptové súbory &amp;quot;Parent.js&amp;quot; 
			(ktorý je referencovaný na samotnej html stránke) a súbory &amp;quot;Child1.js&amp;quot;, &amp;quot;Child2.js&amp;quot;, ktoré sú vyžadované widgetom Parent. Iným riešením môže byť použite &lt;b&gt;HttpHandlerFactory&lt;/b&gt;, ktorá pre spracovanie
			každého	requestu vzniknutého volaním &lt;b&gt;dojo.require&lt;/b&gt; použije custom &lt;b&gt;HttpHandler&lt;/b&gt;, ktorý dokáže na základe requestu načítať resource z assembly a tento zapísať do &lt;b&gt;Response&lt;/b&gt;, a pre každý iný 
			request použije &lt;b&gt;DefaultHttpHandler&lt;/b&gt;.
		&lt;/p&gt;
		
&lt;table style="width:100%;"&gt;
			
&lt;tr&gt;
				
&lt;td&gt;
					&lt;div class="code"&gt;
						&lt;font color="blue"&gt;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;configuration&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;system.web&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;httpHandlers&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;add&lt;/font&gt;&lt;font color="red"&gt;&amp;nbsp;verb&lt;/font&gt;&lt;font color="blue"&gt;=&amp;quot;*&amp;quot;&lt;/font&gt;&lt;font color="red"&gt;&amp;nbsp;path&lt;/font&gt;&lt;font color="blue"&gt;=&amp;quot;*.js&amp;quot;&lt;/font&gt;&lt;font color="red"&gt;&amp;nbsp;type&lt;/font&gt;&lt;font color="blue"&gt;=&amp;quot;WebApp.DojoRequireFactory&amp;quot;&lt;/font&gt;&lt;font color="red"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;/&amp;gt;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;/font&gt;&lt;font color="maroon"&gt;httpHandlers&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="maroon"&gt;system.web&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
						&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="maroon"&gt;configuration&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;/font&gt;
					&lt;/div&gt;
				&lt;/td&gt;
			&lt;/tr&gt;
			
&lt;tr&gt;
				&lt;th style="font-size:10px;font-family:Tahoma;"&gt;
					Konfigurácia použitia HttpHandlerFactory
				&lt;/th&gt;
			&lt;/tr&gt;
		&lt;/table&gt;
		
		
&lt;table style="width:100%;"&gt;
			
&lt;tr&gt;
				
&lt;td&gt;
					&lt;div class="code"&gt;
						&lt;font color="blue"&gt;public&amp;nbsp;class&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;DojoRequireFactory&amp;nbsp;:&amp;nbsp;IHttpHandlerFactory&lt;br /&gt;
						{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;public&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;IHttpHandler&amp;nbsp;GetHandler(HttpContext&amp;nbsp;context,&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;string&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;requestType,&amp;nbsp;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;string&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;url,&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;string&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;pathTranslated)&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="darkgreen"&gt;//&amp;nbsp;Overime&amp;nbsp;ci&amp;nbsp;request&amp;nbsp;koresponduje&amp;nbsp;s&amp;nbsp;tvarom&amp;nbsp;requestu&amp;nbsp;pre&amp;nbsp;volania&amp;nbsp;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;dojo.require&amp;nbsp;ak&amp;nbsp;nie&amp;nbsp;tak&amp;nbsp;pouzijeme&amp;nbsp;pre&amp;nbsp;spracovanie&amp;nbsp;requestu&amp;nbsp;defaultny&amp;nbsp;handler&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;if&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;(!DojoRequireHandler.Path.IsMatch(url))&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;return&amp;nbsp;new&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;DefaultHttpHandler()&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;}&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="darkgreen"&gt;//&amp;nbsp;Z&amp;nbsp;url&amp;nbsp;adresy&amp;nbsp;requestu&amp;nbsp;ziskame&amp;nbsp;informaciu&amp;nbsp;o&amp;nbsp;tom&amp;nbsp;v&amp;nbsp;akom&amp;nbsp;nasmespace&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;sa&amp;nbsp;resource&amp;nbsp;nachadza&amp;nbsp;a&amp;nbsp;aky&amp;nbsp;ma&amp;nbsp;byt&amp;nbsp;nazov&amp;nbsp;skriptu&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;var&amp;nbsp;match&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;DojoRequireHandler.Path.Match(url)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;script&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;match.Groups[&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;script&amp;quot;&lt;/font&gt;&lt;font color="black"&gt;].Value&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;List&amp;lt;&lt;/font&gt;&lt;font color="blue"&gt;string&lt;/font&gt;&lt;font color="black"&gt;&amp;gt;&amp;nbsp;scriptNamespace&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;new&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;List&amp;lt;&lt;/font&gt;&lt;font color="blue"&gt;string&lt;/font&gt;&lt;font color="black"&gt;&amp;gt;(&lt;/font&gt;&lt;font color="maroon"&gt;1&lt;/font&gt;&lt;font color="black"&gt;)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;var&amp;nbsp;namespaces&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;match.Groups[&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;namespace&amp;quot;&lt;/font&gt;&lt;font color="black"&gt;].Captures&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;(&lt;/font&gt;&lt;font color="blue"&gt;int&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;i&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;&lt;/font&gt;&lt;font color="maroon"&gt;0&lt;/font&gt;&lt;font color="blue"&gt;;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;i&amp;nbsp;&amp;lt;&amp;nbsp;namespaces.Count&lt;/font&gt;&lt;font color="blue"&gt;;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;i++)&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;scriptNamespace.Add(namespaces[i].Value)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;}&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="darkgreen"&gt;//&amp;nbsp;Na&amp;nbsp;spracovanie&amp;nbsp;pouzijeme&amp;nbsp;specialny&amp;nbsp;handler&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;return&amp;nbsp;new&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;DojoRequireHandler(script,&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;string&lt;/font&gt;&lt;font color="black"&gt;.Join(&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;.&amp;quot;&lt;/font&gt;&lt;font color="black"&gt;,&amp;nbsp;scriptNamespace))&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;}&lt;br /&gt;
						}&lt;/font&gt;
					&lt;/div&gt;
				&lt;/td&gt;
			&lt;/tr&gt;
			
&lt;tr&gt;
				&lt;th style="font-size:10px;font-family:Tahoma;"&gt;
					Handler Factory ktorá určí ktorý handler má spracovať request
				&lt;/th&gt;
			&lt;/tr&gt;
		&lt;/table&gt;
	
		
&lt;table style="width:100%;"&gt;
			
&lt;tr&gt;
				
&lt;td&gt;
					&lt;div class="code"&gt;
						&lt;font color="blue"&gt;public&amp;nbsp;class&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;DojoRequireHandler&amp;nbsp;:&amp;nbsp;IHttpHandler&lt;br /&gt;
						{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="darkgreen"&gt;//&amp;nbsp;Regularny&amp;nbsp;vyraz,&amp;nbsp;ktory&amp;nbsp;definuje&amp;nbsp;v&amp;nbsp;akom&amp;nbsp;tvare&amp;nbsp;maju&amp;nbsp;vyzerat&amp;nbsp;requesty&amp;nbsp;vykonane&amp;nbsp;cez&amp;nbsp;dojo.require&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;public&amp;nbsp;static&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;Regex&amp;nbsp;Path&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;new&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;Regex(&lt;/font&gt;&lt;font color="#808080"&gt;@&amp;quot;[\w\d:/]*WebResource.axd(?:/(?&amp;lt;namespace&amp;gt;\w+))*/(?&amp;lt;script&amp;gt;\w+)\.js&amp;quot;&lt;/font&gt;&lt;font color="black"&gt;)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private&amp;nbsp;string&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;_scriptName&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private&amp;nbsp;string&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;_namespaces&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;DojoRequireHandler(&lt;/font&gt;&lt;font color="blue"&gt;string&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;scriptName,&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;string&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;namespaces)&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;this&lt;/font&gt;&lt;font color="black"&gt;._scriptName&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;scriptName&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this&lt;/font&gt;&lt;font color="black"&gt;._namespaces&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;namespaces&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;}&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;public&amp;nbsp;void&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;ProcessRequest(HttpContext&amp;nbsp;context)&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;string&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;content&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;null;&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="darkgreen"&gt;//&amp;nbsp;Niektore&amp;nbsp;assemblies&amp;nbsp;chceme&amp;nbsp;preskocit&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;string&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;[]&amp;nbsp;toSkip&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;{&amp;nbsp;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;system&amp;quot;&lt;/font&gt;&lt;font color="black"&gt;,&amp;nbsp;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;microsoft&amp;quot;&lt;/font&gt;&lt;font color="black"&gt;}&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="darkgreen"&gt;//&amp;nbsp;Prejdem&amp;nbsp;vsetky&amp;nbsp;pozadovane&amp;nbsp;assemblies&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;foreach&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;(Assembly&amp;nbsp;assembly&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;in&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;AppDomain.CurrentDomain.GetAssemblies())&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;string&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;name&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;assembly.FullName.Split(&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#39;,&amp;#39;&lt;/font&gt;&lt;font color="black"&gt;)[&lt;/font&gt;&lt;font color="maroon"&gt;0&lt;/font&gt;&lt;font color="black"&gt;].ToLower()&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="darkgreen"&gt;//&amp;nbsp;Preskocime&amp;nbsp;assemblies&amp;nbsp;ktore&amp;nbsp;nechcem&amp;nbsp;spracovavat&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;if&lt;/font&gt;&lt;font color="black"&gt;(Array.IndexOf(toSkip,&amp;nbsp;name.Split(&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#39;.&amp;#39;&lt;/font&gt;&lt;font color="black"&gt;)[&lt;/font&gt;&lt;font color="maroon"&gt;0&lt;/font&gt;&lt;font color="black"&gt;])&amp;nbsp;!&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;-&lt;/font&gt;&lt;font color="maroon"&gt;1&lt;/font&gt;&lt;font color="black"&gt;)&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;continue;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;}&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="darkgreen"&gt;//&amp;nbsp;Dynamcike&amp;nbsp;assemblies&amp;nbsp;nechceme&amp;nbsp;spracovavat&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;if&lt;/font&gt;&lt;font color="black"&gt;(assembly.IsDynamic)&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;continue;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;}&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="darkgreen"&gt;//&amp;nbsp;Ziskame&amp;nbsp;zoznam&amp;nbsp;resourcov&amp;nbsp;v&amp;nbsp;aktualnej&amp;nbsp;assembly&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;string&lt;/font&gt;&lt;font color="black"&gt;[]&amp;nbsp;resourceNames&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;assembly.GetManifestResourceNames()&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="darkgreen"&gt;//&amp;nbsp;Skusime&amp;nbsp;najst&amp;nbsp;konkretny&amp;nbsp;resource&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;foreach&lt;/font&gt;&lt;font color="black"&gt;(&lt;/font&gt;&lt;font color="blue"&gt;string&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;resourceName&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;in&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;resourceNames)&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="darkgreen"&gt;//&amp;nbsp;Ak&amp;nbsp;resource&amp;nbsp;name&amp;nbsp;nekonci&amp;nbsp;nazvom&amp;nbsp;skriptu&amp;nbsp;a&amp;nbsp;nezacina&amp;nbsp;nazvom&amp;nbsp;namespacu&amp;nbsp;tak&amp;nbsp;pokracujeme&amp;nbsp;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;if&lt;/font&gt;&lt;font color="black"&gt;(!resourceName.EndsWith(&lt;/font&gt;&lt;font color="blue"&gt;this&lt;/font&gt;&lt;font color="black"&gt;._scriptName&amp;nbsp;+&amp;nbsp;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;.js&amp;quot;&lt;/font&gt;&lt;font color="black"&gt;,&amp;nbsp;StringComparison.InvariantCultureIgnoreCase)&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;||&amp;nbsp;!resourceName.StartsWith(&lt;/font&gt;&lt;font color="blue"&gt;this&lt;/font&gt;&lt;font color="black"&gt;._namespaces,&amp;nbsp;StringComparison.InvariantCultureIgnoreCase))&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;continue;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;}&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="darkgreen"&gt;//&amp;nbsp;Nacitame&amp;nbsp;resource&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;using&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;(var&amp;nbsp;resourceStream&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;new&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;StreamReader(assembly.GetManifestResourceStream(resourceName)))&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;content&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;resourceStream.ReadToEnd()&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;}&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;break;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;}&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="darkgreen"&gt;//&amp;nbsp;Ak&amp;nbsp;bol&amp;nbsp;uz&amp;nbsp;nacitany&amp;nbsp;resource&amp;nbsp;tak&amp;nbsp;dalsi&amp;nbsp;nehladame&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;if&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;(content&amp;nbsp;!&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;null&lt;/font&gt;&lt;font color="black"&gt;)&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;break;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;}&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="darkgreen"&gt;//&amp;nbsp;Ak&amp;nbsp;sa&amp;nbsp;nepodarilo&amp;nbsp;nacitat&amp;nbsp;resource&amp;nbsp;ukoncime&amp;nbsp;response&amp;nbsp;ako&amp;nbsp;notfound&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;if&lt;/font&gt;&lt;font color="black"&gt;(content&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;==&amp;nbsp;null&lt;/font&gt;&lt;font color="black"&gt;)&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;context.Response.StatusCode&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;(&lt;/font&gt;&lt;font color="blue"&gt;int&lt;/font&gt;&lt;font color="black"&gt;)HttpStatusCode.NotFound&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;context.Response.Flush()&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;context.ApplicationInstance.CompleteRequest()&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;}&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="darkgreen"&gt;//&amp;nbsp;Obsah&amp;nbsp;resourcu&amp;nbsp;zapiseme&amp;nbsp;do&amp;nbsp;response&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;context.Response.ContentType&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;text/javascript&amp;quot;&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;context.Response.Write(content)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;context.Response.Flush()&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;context.ApplicationInstance.CompleteRequest()&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;}&lt;br /&gt;
						}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;
					&lt;/div&gt;
				&lt;/td&gt;
			&lt;/tr&gt;
			
&lt;tr&gt;
				&lt;th style="font-size:10px;font-family:Tahoma;"&gt;
					Handler pre načítanie resource z assembly
				&lt;/th&gt;
			&lt;/tr&gt;
		&lt;/table&gt;
		
		
&lt;p&gt;
			Jediné čo ostáva ešte spraviť, je nastaviť cestu pre náš modul v &lt;b&gt;djConfig&lt;/b&gt; tak, aby &lt;b&gt;dojo.require&lt;/b&gt; volania boli v takom tvare, na základe ktorého &lt;b&gt;HandlerFactory&lt;/b&gt; bude vedieť určiť, že request
			má spracovať custom handler a následne, aby tento handler vedel aký resource má nájsť.
		&lt;/p&gt;
		
&lt;table style="width:100%;"&gt;
			
&lt;tr&gt;
				
&lt;td&gt;
					&lt;div class="code"&gt;
						&lt;font color="blue"&gt;var&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;djConfig&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;paths:&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Widgets:&amp;nbsp;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;http://localhost:####/WebResource.axd/Custom/Widgets&amp;quot;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;}&lt;br /&gt;
						}&lt;/font&gt;&lt;font color="blue"&gt;;&lt;/font&gt;
					&lt;/div&gt;
				&lt;/td&gt;
			&lt;/tr&gt;
			
&lt;tr&gt;
				&lt;th style="font-size:10px;font-family:Tahoma;"&gt;
					Upravená djConfig konfigurácia
				&lt;/th&gt;
			&lt;/tr&gt;
		&lt;/table&gt;
			
		
&lt;p&gt;
			S touto konfiguráciou volanie metódy &lt;b&gt;dojo.require(&amp;quot;Widgets.Parent&amp;quot;)&lt;/b&gt; spustí GET request na súbor &lt;b&gt;&amp;quot;http://localhost:####/WebResource.axd/Custom/Widgets/Parent.js&lt;/b&gt;, pre spracovanie ktorého
			&lt;b&gt;DojoRequireFactory &lt;/b&gt; vyberie custom handler &lt;b&gt;DojoRequireHandler&lt;/b&gt;, ktorý načíta obsah súboru z assembly a ten zapíše do &lt;b&gt;Response&lt;/b&gt;. Takto nám bude requirovanie skriptov pomocou &lt;b&gt;dojo&lt;/b&gt; fungovať aj pokiaľ budú tieto 
			uložené ako resources v assembly.
		&lt;/p&gt;

		&lt;script src="http://connect.facebook.net/en_US/all.js#xfbml=1"&gt;&lt;/script&gt;&lt;fb:like href="" show_faces="true" width="450" font=""&gt;&lt;/fb:like&gt;&lt;img src="http://blog.aspnet.sk/aggbug.aspx?PostID=307120" width="1" height="1"&gt;</description><category domain="http://blog.aspnet.sk/xxxmatko/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blog.aspnet.sk/xxxmatko/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blog.aspnet.sk/xxxmatko/archive/tags/djConfig/default.aspx">djConfig</category><category domain="http://blog.aspnet.sk/xxxmatko/archive/tags/dojo/default.aspx">dojo</category><category domain="http://blog.aspnet.sk/xxxmatko/archive/tags/dojo.declare/default.aspx">dojo.declare</category><category domain="http://blog.aspnet.sk/xxxmatko/archive/tags/dojo.require/default.aspx">dojo.require</category><category domain="http://blog.aspnet.sk/xxxmatko/archive/tags/HttpHandler/default.aspx">HttpHandler</category><category domain="http://blog.aspnet.sk/xxxmatko/archive/tags/HttpHandlerFactory/default.aspx">HttpHandlerFactory</category><category domain="http://blog.aspnet.sk/xxxmatko/archive/tags/widget/default.aspx">widget</category></item><item><title>Ako zistiť či je objekt html element pomocou javascriptu</title><link>http://blog.aspnet.sk/xxxmatko/archive/2012/02/03/ako-zisti-i-je-objekt-html-element-pomocou-javascriptu.aspx</link><pubDate>Fri, 03 Feb 2012 09:05:00 GMT</pubDate><guid isPermaLink="false">cbdfeddd-8b45-43cb-b10b-361e40cba84b:307099</guid><dc:creator>xxxmatko</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blog.aspnet.sk/xxxmatko/rsscomments.aspx?PostID=307099</wfw:commentRss><comments>http://blog.aspnet.sk/xxxmatko/archive/2012/02/03/ako-zisti-i-je-objekt-html-element-pomocou-javascriptu.aspx#comments</comments><description>		
&lt;p&gt;
			Jedna z vlastností, ktorá sa mi páči na &lt;b&gt;javascripte&lt;/b&gt; je &lt;b&gt;Weak Typing&lt;/b&gt;. Nie že by som to pokladal za nejakú super výhodu. Na otázku, či je lepší pogramovací jazyk 
			podporujúci &lt;b&gt;Strong Typing&lt;/b&gt; alebo &lt;b&gt;Weak Typing&lt;/b&gt;, by som si za víťaza zvolil určite toho skôr menovaného. 
		&lt;/p&gt;
		
&lt;p&gt;
			Na druhej strane to, že v &lt;b&gt;javascripte&lt;/b&gt; sa môže dátový typ premennej meniť počas behu programu umožňuje písať kód tak, ako by sme ho napríklad v &lt;b&gt;C#&lt;/b&gt; nikdy
			nenapísali.
		&lt;/p&gt;
		
&lt;table style="width:100%;"&gt;
			
&lt;tr&gt;
				
&lt;td&gt;
					&lt;div class="code"&gt;
						&lt;font color="blue"&gt;var&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;x&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&lt;br /&gt;
						&lt;/font&gt;&lt;font color="black"&gt;x&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;&lt;/font&gt;&lt;font color="maroon"&gt;1&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&lt;/font&gt;&lt;font color="black"&gt;console.info(x)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&lt;/font&gt;&lt;font color="black"&gt;console.log(&lt;/font&gt;&lt;font color="blue"&gt;typeof&lt;/font&gt;&lt;font color="black"&gt;(x))&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&lt;br /&gt;
						&lt;/font&gt;&lt;font color="black"&gt;x&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;some&amp;nbsp;string&amp;quot;&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&lt;/font&gt;&lt;font color="black"&gt;console.info(x)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&lt;/font&gt;&lt;font color="black"&gt;console.log(&lt;/font&gt;&lt;font color="blue"&gt;typeof&lt;/font&gt;&lt;font color="black"&gt;(x))&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&lt;br /&gt;
						&lt;/font&gt;&lt;font color="black"&gt;x&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;{}&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&lt;/font&gt;&lt;font color="black"&gt;console.info(x)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&lt;/font&gt;&lt;font color="black"&gt;console.log(&lt;/font&gt;&lt;font color="blue"&gt;typeof&lt;/font&gt;&lt;font color="black"&gt;(x))&lt;/font&gt;&lt;font color="blue"&gt;;&lt;/font&gt;
					&lt;/div&gt;
				&lt;/td&gt;
			&lt;/tr&gt;
			
&lt;tr&gt;
				&lt;th style="font-size:10px;font-family:Tahoma;"&gt;
					Príklad zmeny dátového typu premennej
				&lt;/th&gt;
			&lt;/tr&gt;
		&lt;/table&gt;
	
		
&lt;p&gt;
			Častým takýmto prípadom využitia je metóda, ktorá na základe dátového typu vstupného parametra vykoná rôzne operácie. Ja som si takúto metódu vyrobil. Moja metóda
			mala jeden vstupný parameter. Ak tento bol typu &lt;b&gt;string&lt;/b&gt;, tak to znamenalo, že parameter reprezentuje &lt;b&gt;id&lt;/b&gt; html elementu, ale ak bol typu &lt;b&gt;object&lt;/b&gt;, tak
			to bol priamo html element. A konečne sa dostávam k jadru problému. Zistiť, či je premenná typu &lt;b&gt;string&lt;/b&gt; je jednoduché použitím operátora &lt;b&gt;typeof&lt;/b&gt; (viď. 
			&lt;span style="font-size:10px;font-family:Tahoma;"&gt;Príklad zmeny dátového typu premennej&lt;/span&gt;). Ak je však premenná handle na html element, operátor &lt;b&gt;typeof&lt;/b&gt;
			zahlási že je to &lt;b&gt;object&lt;/b&gt;. No dobre, ale objekt môže byť aj niečo iné ako len html element. Po relatívne krátkej dobe, som našiel spôsob, ako overiť či premená
			predstavuje handle na html element. Výsledok mojej snahy je možné vidieť na nasledovnej úkážke:
		&lt;/p&gt;
		
&lt;table style="width:100%;"&gt;
			
&lt;tr&gt;
				
&lt;td&gt;
					&lt;div class="code"&gt;
						&lt;font color="blue"&gt;var&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;isHtmlNode&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;function&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;(o)&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;if&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;(&lt;/font&gt;&lt;font color="blue"&gt;typeof&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;(Node)&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;===&amp;nbsp;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;object&amp;quot;&lt;/font&gt;&lt;font color="black"&gt;)&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;return&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;o&amp;nbsp;instanceof&amp;nbsp;Node&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;}&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;else&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;return&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;(&lt;/font&gt;&lt;font color="blue"&gt;typeof&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;(o)&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;===&amp;nbsp;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;object&amp;quot;&lt;/font&gt;&lt;font color="black"&gt;)&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;(&lt;/font&gt;&lt;font color="blue"&gt;typeof&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;(o.nodeType)&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;===&amp;nbsp;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;number&amp;quot;&lt;/font&gt;&lt;font color="black"&gt;)&amp;nbsp;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;(&lt;/font&gt;&lt;font color="blue"&gt;typeof&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;(o.nodeName)&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;===&amp;nbsp;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;string&amp;quot;&lt;/font&gt;&lt;font color="black"&gt;)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;}&lt;br /&gt;
						}&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&lt;br /&gt;
						var&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;isHtmlElement&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;function&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;(o)&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;if&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;(&lt;/font&gt;&lt;font color="blue"&gt;typeof&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;(HTMLElement)&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;===&amp;nbsp;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;object&amp;quot;&lt;/font&gt;&lt;font color="black"&gt;)&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;return&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;o&amp;nbsp;instanceof&amp;nbsp;HTMLElement&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;}&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;else&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;return&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;(&lt;/font&gt;&lt;font color="blue"&gt;typeof&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;(o)&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;===&amp;nbsp;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;object&amp;quot;&lt;/font&gt;&lt;font color="black"&gt;)&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;(o.nodeType&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;===&amp;nbsp;&lt;/font&gt;&lt;font color="maroon"&gt;1&lt;/font&gt;&lt;font color="black"&gt;)&amp;nbsp;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;(&lt;/font&gt;&lt;font color="blue"&gt;typeof&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;(o.nodeName)&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;===&amp;nbsp;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;string&amp;quot;&lt;/font&gt;&lt;font color="black"&gt;)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;}&lt;br /&gt;
						}&lt;/font&gt;&lt;font color="blue"&gt;;&amp;nbsp;&lt;/font&gt;

					&lt;/div&gt;
				&lt;/td&gt;
			&lt;/tr&gt;
			
&lt;tr&gt;
				&lt;th style="font-size:10px;font-family:Tahoma;"&gt;
					Metódy overujúce, či je premenná html element
				&lt;/th&gt;
			&lt;/tr&gt;
		&lt;/table&gt;
		
		
&lt;p&gt;
			Prvá metóda overí, či je vstupný objekt inštanciou triedy &lt;b&gt;Node&lt;/b&gt; a druhá či je vstupný objekt inštanciou triedy &lt;b&gt;HTMLElement&lt;/b&gt;. Ich použitie môže vyzerať aj takto:
		&lt;/p&gt;
		
&lt;table style="width:100%;"&gt;
			
&lt;tr&gt;
				
&lt;td&gt;
					&lt;div class="code"&gt;
						&lt;font color="blue"&gt;var&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;setContent&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;function&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;(o)&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;if&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;(isHtmlElement(content)&amp;nbsp;||&amp;nbsp;isHtmlNode(content))&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="darkgreen"&gt;//&amp;nbsp;o&amp;nbsp;is&amp;nbsp;an&amp;nbsp;html&amp;nbsp;element&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;}&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;else&amp;nbsp;if&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;(&lt;/font&gt;&lt;font color="blue"&gt;typeof&lt;/font&gt;&lt;font color="black"&gt;(o)&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;===&amp;nbsp;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;string&amp;quot;&lt;/font&gt;&lt;font color="black"&gt;)&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="darkgreen"&gt;//&amp;nbsp;o&amp;nbsp;is&amp;nbsp;id&amp;nbsp;of&amp;nbsp;an&amp;nbsp;html&amp;nbsp;element&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;}&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;else&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="darkgreen"&gt;//&amp;nbsp;throw&amp;nbsp;an&amp;nbsp;error&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;}&lt;br /&gt;
						}&lt;/font&gt;&lt;font color="blue"&gt;;&lt;/font&gt;
					&lt;/div&gt;
				&lt;/td&gt;
			&lt;/tr&gt;
			
&lt;tr&gt;
				&lt;th style="font-size:10px;font-family:Tahoma;"&gt;
					Príklad použitia metód pre detekciu objektu typu HTMLElement
				&lt;/th&gt;
			&lt;/tr&gt;
		&lt;/table&gt;
		
		
&lt;p&gt;
			Takto si môžeme vyrobiť aj oveľa presnejšie metódy pre detekciu konkrétnych elementov, či už to podľa atribútu &lt;b&gt;tagName&lt;/b&gt; alebo detekciou na konkrétne
			triedy, ktoré dedia z triedy &lt;b&gt;HTMLElement&lt;/b&gt; (&lt;a href="http://krook.org/jsdom/HTMLAnchorElement.html" target="_blank"&gt;HTMLAnchorElement&lt;/a&gt;, &lt;a href="http://krook.org/jsdom/HTMLAppletElement.html" target="_blank"&gt;HTMLAppletElement&lt;/a&gt;, &lt;a href="http://krook.org/jsdom/HTMLAreaElement.html" target="_blank"&gt;HTMLAreaElement&lt;/a&gt;, &lt;a href="http://krook.org/jsdom/HTMLBaseElement.html" target="_blank"&gt;HTMLBaseElement&lt;/a&gt;, &lt;a href="http://krook.org/jsdom/HTMLBaseFontElement.html" target="_blank"&gt;HTMLBaseFontElement&lt;/a&gt;, &lt;a href="http://krook.org/jsdom/HTMLBlockquoteElement.html" target="_blank"&gt;HTMLBlockquoteElement&lt;/a&gt;, &lt;a href="http://krook.org/jsdom/HTMLBodyElement.html" target="_blank"&gt;HTMLBodyElement&lt;/a&gt;, &lt;a href="http://krook.org/jsdom/HTMLBRElement.html" target="_blank"&gt;HTMLBRElement&lt;/a&gt;, &lt;a href="http://krook.org/jsdom/HTMLButtonElement.html" target="_blank"&gt;HTMLButtonElement&lt;/a&gt;, &lt;a href="http://krook.org/jsdom/HTMLDirectoryElement.html" target="_blank"&gt;HTMLDirectoryElement&lt;/a&gt;, &lt;a href="http://krook.org/jsdom/HTMLDivElement.html" target="_blank"&gt;HTMLDivElement&lt;/a&gt;, &lt;a href="http://krook.org/jsdom/HTMLDListElement.html" target="_blank"&gt;HTMLDListElement&lt;/a&gt;, &lt;a href="http://krook.org/jsdom/HTMLFieldSetElement.html" target="_blank"&gt;HTMLFieldSetElement&lt;/a&gt;, &lt;a href="http://krook.org/jsdom/HTMLFontElement.html" target="_blank"&gt;HTMLFontElement&lt;/a&gt;, &lt;a href="http://krook.org/jsdom/HTMLFormElement.html" target="_blank"&gt;HTMLFormElement&lt;/a&gt;, &lt;a href="http://krook.org/jsdom/HTMLFrameElement.html" target="_blank"&gt;HTMLFrameElement&lt;/a&gt;, &lt;a href="http://krook.org/jsdom/HTMLFrameSetElement.html" target="_blank"&gt;HTMLFrameSetElement&lt;/a&gt;, &lt;a href="http://krook.org/jsdom/HTMLHeadElement.html" target="_blank"&gt;HTMLHeadElement&lt;/a&gt;, &lt;a href="http://krook.org/jsdom/HTMLHeadingElement.html" target="_blank"&gt;HTMLHeadingElement&lt;/a&gt;, &lt;a href="http://krook.org/jsdom/HTMLHRElement.html" target="_blank"&gt;HTMLHRElement&lt;/a&gt;, &lt;a href="http://krook.org/jsdom/HTMLHtmlElement.html" target="_blank"&gt;HTMLHtmlElement&lt;/a&gt;, &lt;a href="http://krook.org/jsdom/HTMLIFrameElement.html" target="_blank"&gt;HTMLIFrameElement&lt;/a&gt;, &lt;a href="http://krook.org/jsdom/HTMLImageElement.html" target="_blank"&gt;HTMLImageElement&lt;/a&gt;, &lt;a href="http://krook.org/jsdom/HTMLInputElement.html" target="_blank"&gt;HTMLInputElement&lt;/a&gt;, &lt;a href="http://krook.org/jsdom/HTMLIsIndexElement.html" target="_blank"&gt;HTMLIsIndexElement&lt;/a&gt;, &lt;a href="http://krook.org/jsdom/HTMLLabelElement.html" target="_blank"&gt;HTMLLabelElement&lt;/a&gt;, &lt;a href="http://krook.org/jsdom/HTMLLayerElement.html" target="_blank"&gt;HTMLLayerElement&lt;/a&gt;, &lt;a href="http://krook.org/jsdom/HTMLLegendElement.html" target="_blank"&gt;HTMLLegendElement&lt;/a&gt;, &lt;a href="http://krook.org/jsdom/HTMLLIElement.html" target="_blank"&gt;HTMLLIElement&lt;/a&gt;, &lt;a href="http://krook.org/jsdom/HTMLLinkElement.html" target="_blank"&gt;HTMLLinkElement&lt;/a&gt;, &lt;a href="http://krook.org/jsdom/HTMLMapElement.html" target="_blank"&gt;HTMLMapElement&lt;/a&gt;, &lt;a href="http://krook.org/jsdom/HTMLMenuElement.html" target="_blank"&gt;HTMLMenuElement&lt;/a&gt;, &lt;a href="http://krook.org/jsdom/HTMLMetaElement.html" target="_blank"&gt;HTMLMetaElement&lt;/a&gt;, &lt;a href="http://krook.org/jsdom/HTMLModElement.html" target="_blank"&gt;HTMLModElement&lt;/a&gt;, &lt;a href="http://krook.org/jsdom/HTMLObjectElement.html" target="_blank"&gt;HTMLObjectElement&lt;/a&gt;, &lt;a href="http://krook.org/jsdom/HTMLOListElement.html" target="_blank"&gt;HTMLOListElement&lt;/a&gt;, &lt;a href="http://krook.org/jsdom/HTMLOptGroupElement.html" target="_blank"&gt;HTMLOptGroupElement&lt;/a&gt;, &lt;a href="http://krook.org/jsdom/HTMLOptionElement.html" target="_blank"&gt;HTMLOptionElement&lt;/a&gt;, &lt;a href="http://krook.org/jsdom/HTMLParagraphElement.html" target="_blank"&gt;HTMLParagraphElement&lt;/a&gt;, &lt;a href="http://krook.org/jsdom/HTMLParamElement.html" target="_blank"&gt;HTMLParamElement&lt;/a&gt;, &lt;a href="http://krook.org/jsdom/HTMLPreElement.html" target="_blank"&gt;HTMLPreElement&lt;/a&gt;, &lt;a href="http://krook.org/jsdom/HTMLQuoteElement.html" target="_blank"&gt;HTMLQuoteElement&lt;/a&gt;, &lt;a href="http://krook.org/jsdom/HTMLScriptElement.html" target="_blank"&gt;HTMLScriptElement&lt;/a&gt;, &lt;a href="http://krook.org/jsdom/HTMLSelectElement.html" target="_blank"&gt;HTMLSelectElement&lt;/a&gt;, &lt;a href="http://krook.org/jsdom/HTMLStyleElement.html" target="_blank"&gt;HTMLStyleElement&lt;/a&gt;, &lt;a href="http://krook.org/jsdom/HTMLTableCaptionElement.html" target="_blank"&gt;HTMLTableCaptionElement&lt;/a&gt;, &lt;a href="http://krook.org/jsdom/HTMLTableCellElement.html" target="_blank"&gt;HTMLTableCellElement&lt;/a&gt;, &lt;a href="http://krook.org/jsdom/HTMLTableColElement.html" target="_blank"&gt;HTMLTableColElement&lt;/a&gt;, &lt;a href="http://krook.org/jsdom/HTMLTableElement.html" target="_blank"&gt;HTMLTableElement&lt;/a&gt;, &lt;a href="http://krook.org/jsdom/HTMLTableRowElement.html" target="_blank"&gt;HTMLTableRowElement&lt;/a&gt;, &lt;a href="http://krook.org/jsdom/HTMLTableSectionElement.html" target="_blank"&gt;HTMLTableSectionElement&lt;/a&gt;, &lt;a href="http://krook.org/jsdom/HTMLTextAreaElement.html" target="_blank"&gt;HTMLTextAreaElement&lt;/a&gt;, &lt;a href="http://krook.org/jsdom/HTMLTitleElement.html" target="_blank"&gt;HTMLTitleElement&lt;/a&gt;, &lt;a href="http://krook.org/jsdom/HTMLUListElement.html" target="_blank"&gt;HTMLUListElement&lt;/a&gt;).
		&lt;/p&gt;

		&lt;script src="http://connect.facebook.net/en_US/all.js#xfbml=1"&gt;&lt;/script&gt;&lt;fb:like href="" show_faces="true" width="450" font=""&gt;&lt;/fb:like&gt;&lt;img src="http://blog.aspnet.sk/aggbug.aspx?PostID=307099" width="1" height="1"&gt;</description><category domain="http://blog.aspnet.sk/xxxmatko/archive/tags/HTML/default.aspx">HTML</category><category domain="http://blog.aspnet.sk/xxxmatko/archive/tags/Javascript/default.aspx">Javascript</category></item><item><title>Inicializovanie vlastností v dojo widgete</title><link>http://blog.aspnet.sk/xxxmatko/archive/2011/10/10/inicializovanie-vlastnost-237-v-dojo-widgete.aspx</link><pubDate>Mon, 10 Oct 2011 08:32:00 GMT</pubDate><guid isPermaLink="false">cbdfeddd-8b45-43cb-b10b-361e40cba84b:307013</guid><dc:creator>xxxmatko</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blog.aspnet.sk/xxxmatko/rsscomments.aspx?PostID=307013</wfw:commentRss><comments>http://blog.aspnet.sk/xxxmatko/archive/2011/10/10/inicializovanie-vlastnost-237-v-dojo-widgete.aspx#comments</comments><description>Nedávno som narazil na problém pri nastavovaní hodnôt atribútov pre &lt;b&gt;dojo&lt;/b&gt; &lt;b&gt;widget&lt;/b&gt;. Na stránke som mal vytvorené dve rôzne inštancie jedného &lt;b&gt;widgetu&lt;/b&gt;.
			Problém spočíval v tom, že keď som zmenil hodnotu vlastnosti vo widgete &lt;b&gt;A&lt;/b&gt;, tak hodnota, ktorú som do tejto vlastnosti nastavil, sa nastavila aj do tej istej vlastnosti
			vo &lt;b&gt;widgete&lt;/b&gt; &lt;b&gt;B&lt;/b&gt;. Inak povedané, táto vlastnosť sa správala, ako keby bola statickou vlastnosťou a teda prístup k nej bol zdielaný všetkými inštanciami daného
			&lt;b&gt;widgetu&lt;/b&gt;.
		
		&lt;p&gt;
			Všetky atribúty boli zadeklarované presne podľa popisu, ktorý je uvedený na stránke 
			&lt;b&gt;&lt;a href="http://dojotoolkit.org/reference-guide/quickstart/writingWidgets.html#declaring-attributes" target="_blank" title="dojo-declaring-attributes"&gt;doja&lt;/a&gt;&lt;/b&gt;
			v časti &lt;b&gt;&lt;a href="http://dojotoolkit.org/reference-guide/quickstart/writingWidgets.html#declaring-attributes" target="_blank" title="dojo-declaring-attributes"&gt;deklarácia atribútov&lt;/a&gt;&lt;/b&gt;.
			A teda boli zadeklarované v rámci &lt;b&gt;prototypu&lt;/b&gt; spolu s hodnotou, ktorá slúži ako default hodnota, v prípade že pri vytvorení &lt;b&gt;widgetu&lt;/b&gt; nebola žiadna iná hodnota poskytnutá,
			a taktiež definuje aj dátovy typ atribútu pre &lt;b&gt;dojo&lt;/b&gt;.
		&lt;/p&gt;
		&lt;table style="width:100%;"&gt;
			&lt;tr&gt;
				&lt;td&gt;
					&lt;div class="code"&gt;
						&lt;font color="black"&gt;dojo.provide(&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;Widgets.Sample&amp;quot;&lt;/font&gt;&lt;font color="black"&gt;)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&lt;br /&gt;
						&lt;/font&gt;&lt;font color="black"&gt;dojo.require(&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;dijit._Widget&amp;quot;&lt;/font&gt;&lt;font color="black"&gt;)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&lt;br /&gt;
						&lt;/font&gt;&lt;font color="black"&gt;dojo.declare(&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;Widgets.Sample&amp;quot;&lt;/font&gt;&lt;font color="black"&gt;,&amp;nbsp;[dijit._Widget],&lt;br /&gt;
						{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_label:&amp;nbsp;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;Some&amp;nbsp;label&amp;quot;&lt;/font&gt;&lt;font color="black"&gt;,&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_duration:&amp;nbsp;&lt;/font&gt;&lt;font color="maroon"&gt;100&lt;/font&gt;&lt;font color="black"&gt;,&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_isDisabled:&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;false&lt;/font&gt;&lt;font color="black"&gt;,&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_startPosition:&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x:&amp;nbsp;&lt;/font&gt;&lt;font color="maroon"&gt;0&lt;/font&gt;&lt;font color="black"&gt;,&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;y:&amp;nbsp;&lt;/font&gt;&lt;font color="maroon"&gt;0&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;},&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;constructor:&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;function&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;(args,&amp;nbsp;srcNodeRef)&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;args&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;args&amp;nbsp;||&amp;nbsp;{}&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this&lt;/font&gt;&lt;font color="black"&gt;._label&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;args.label&amp;nbsp;||&amp;nbsp;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;Some&amp;nbsp;label&amp;quot;&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this&lt;/font&gt;&lt;font color="black"&gt;._duration&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;args.duration&amp;nbsp;||&amp;nbsp;&lt;/font&gt;&lt;font color="maroon"&gt;100&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this&lt;/font&gt;&lt;font color="black"&gt;._isDisabled&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;args.isDisabled&amp;nbsp;||&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;false;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;},&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;postCreate:&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;function&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;()&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;var&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;coords&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;dojo.position(&lt;/font&gt;&lt;font color="blue"&gt;this&lt;/font&gt;&lt;font color="black"&gt;.domNode)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this&lt;/font&gt;&lt;font color="black"&gt;._startPosition.x&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;coords.x&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this&lt;/font&gt;&lt;font color="black"&gt;._startPosition.y&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;coords.y&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;},&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;write:&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;function&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;()&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;console.info(dojo.toJson({&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;label:&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;this&lt;/font&gt;&lt;font color="black"&gt;._label,&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;disabled:&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;this&lt;/font&gt;&lt;font color="black"&gt;._isDisabled,&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;duration:&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;this&lt;/font&gt;&lt;font color="black"&gt;._duration,&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;start:&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;this&lt;/font&gt;&lt;font color="black"&gt;._startPosition&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}))&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;}&lt;br /&gt;
						})&lt;/font&gt;&lt;font color="blue"&gt;;&lt;/font&gt;
					&lt;/div&gt;
				&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
				&lt;th style="font-size:10px;font-family:Tahoma;"&gt;
					Definícia ilustračného widgetu
				&lt;/th&gt;
			&lt;/tr&gt;
		&lt;/table&gt;	
		&lt;p&gt;
			Problém si môžeme demonštrovať na vyššie uvedenom &lt;b&gt;wdigete&lt;/b&gt;. Pre &lt;b&gt;widget&lt;/b&gt; boli zadeklarované štyri vlastnosti:
			&lt;/p&gt;&lt;ol&gt;
				&lt;li&gt;&lt;b&gt;_label&lt;/b&gt; : premenná typu string,&lt;/li&gt;
				&lt;li&gt;&lt;b&gt;_duration&lt;/b&gt; : premenná typu int,&lt;/li&gt;
				&lt;li&gt;&lt;b&gt;_isDisabled&lt;/b&gt; : premenná typu bool,&lt;/li&gt;
				&lt;li&gt;&lt;b&gt;_startPosition&lt;/b&gt; : premenná typu object.&lt;/li&gt;					
			&lt;/ol&gt;
			Prvé tri vlastnosti boli bezproblémové a tieto sa nastavovali priamo v konštruktore &lt;b&gt;widgetu&lt;/b&gt;. Kritickou bola posledná vlastnoť &lt;b&gt;_startPosition&lt;/b&gt;, ktorá bola typu &lt;b&gt;object&lt;/b&gt;.
			Táto sa nastavovala automaticky v metóde &lt;b&gt;postCreate&lt;/b&gt; (ktorá sa v rámci životného cyklu &lt;b&gt;widgetu&lt;/b&gt; volá vo chvíli, keď je widget vyrenderovaný na stránke) a slúžila na uchovanie štartovacej pozície
			html elementu, pre ktorý bola vytvorená inštancia widgetu. Widget obsahuje aj pomocnú metódu &lt;b&gt;write&lt;/b&gt;, ktorá do konzoly vypíše hodnoty atribútov. 
			Na stránku som následne pridal dva html elementy a pre ne vytvoril dve rôzne inštancie nášho pokusného &lt;b&gt;widgetu&lt;/b&gt;.
		&lt;p&gt;&amp;nbsp;&lt;/p&gt;
		&lt;table style="width:100%;"&gt;
			&lt;tr&gt;
				&lt;td&gt;
					&lt;div class="code"&gt;
						&lt;font color="blue"&gt;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;div&lt;/font&gt;&lt;font color="red"&gt;&amp;nbsp;id&lt;/font&gt;&lt;font color="blue"&gt;=&amp;quot;smaple1&amp;quot;&lt;/font&gt;&lt;font color="red"&gt;&amp;nbsp;style&lt;/font&gt;&lt;font color="blue"&gt;=&amp;quot;position:absolute;left:0px;top:0px;&amp;quot;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="maroon"&gt;div&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
						&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;div&lt;/font&gt;&lt;font color="red"&gt;&amp;nbsp;id&lt;/font&gt;&lt;font color="blue"&gt;=&amp;quot;sample2&amp;quot;&lt;/font&gt;&lt;font color="red"&gt;&amp;nbsp;style&lt;/font&gt;&lt;font color="blue"&gt;=&amp;quot;position:absolute;left:20px;top:20px;&amp;quot;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="maroon"&gt;div&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
						&lt;br /&gt;
						&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;script&lt;/font&gt;&lt;font color="red"&gt;&amp;nbsp;type&lt;/font&gt;&lt;font color="blue"&gt;=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dojo.addOnLoad(&lt;/font&gt;&lt;font color="blue"&gt;function&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;()&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;window&lt;/font&gt;&lt;font color="black"&gt;.sample1&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;new&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;Widgets.Sample({&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;label:&amp;nbsp;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;sample1&amp;quot;&lt;/font&gt;&lt;font color="black"&gt;,&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;duration:&amp;nbsp;&lt;/font&gt;&lt;font color="maroon"&gt;1&lt;/font&gt;&lt;font color="black"&gt;,&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;isDisabled:&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;false&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;},&amp;nbsp;dojo.byId(&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;sample1&amp;quot;&lt;/font&gt;&lt;font color="black"&gt;))&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;window&lt;/font&gt;&lt;font color="black"&gt;.sample2&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;new&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;Widgets.Sample({&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;label:&amp;nbsp;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;sample2&amp;quot;&lt;/font&gt;&lt;font color="black"&gt;,&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;duration:&amp;nbsp;&lt;/font&gt;&lt;font color="maroon"&gt;2&lt;/font&gt;&lt;font color="black"&gt;,&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;isDisabled:&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;true&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;},&amp;nbsp;dojo.byId(&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;sample2&amp;quot;&lt;/font&gt;&lt;font color="black"&gt;))&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;})&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;lt;/&lt;/font&gt;&lt;font color="maroon"&gt;script&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;/font&gt;
					&lt;/div&gt;
				&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
				&lt;th style="font-size:10px;font-family:Tahoma;"&gt;
					Vytvorenie dvoch rôznych inštancií pokusného widgetu
				&lt;/th&gt;
			&lt;/tr&gt;
		&lt;/table&gt;	
		&lt;p&gt;
			Po zavolaní metódy &lt;b&gt;write&lt;/b&gt; som zistil, že oba &lt;b&gt;widgety&lt;/b&gt; majú atribút &lt;b&gt;_startPosition&lt;/b&gt; nastavený na rovnakú hodnotu reprezentujúcu štartovaciu pozíciu druhého &lt;b&gt;widgetu&lt;/b&gt;, 
			pričom hodnoty ostatných atribútov boli rôzne. Hodnota sa menila súčasne pre oba &lt;b&gt;widgety&lt;/b&gt; aj pri jej nastavení pre prvý a rovnako tak aj pre druhý widget. Odpoveď na otázku: &lt;i&gt;&amp;quot;Prečo je to tak, keď všetko 
			bolo spravené podľa návodu?&amp;quot;&lt;/i&gt; spočíva v tom, ako &lt;b&gt;dojo&lt;/b&gt; vytvára triedy. Keďže &lt;b&gt;javascript&lt;/b&gt; nemá &lt;b&gt;class&lt;/b&gt; systém ako &lt;b&gt;C#&lt;/b&gt;, &lt;b&gt;Java&lt;/b&gt; alebo iné OOP jazyky, dojo simuluje 
			tento prístup prostredníctvom metódy &lt;b&gt;&lt;a href="http://docs.dojocampus.org/dojo/declare" target="_blank" title="dojo.declare"&gt;dojo.declare&lt;/a&gt;&lt;/b&gt;, ktorej tretím vstupným argumentom je objekt,
			ktorý reprezentuje &lt;b&gt;prototype&lt;/b&gt; triedy, a jeho vlastnosti sú skopírované do dynamicky vytvoreného prototypu. No a kľučovým je to &lt;i&gt;&amp;quot;skopírovanie&amp;quot;&lt;/i&gt;. Pri tzv. primitívnych dátových typoch ako sú reťazce, čísla a iné
			nie je problém. Pokiaľ však v objekte reprezentujúcom &lt;b&gt;prototype&lt;/b&gt; triedy zadeklarujeme atribút ako dátový typ &lt;b&gt;object&lt;/b&gt;, tak tento bude do každej novej inštancie widgetu predaný odkazom a teda 
			bude zdieľaný pre každú jednu inštanciu. Inak povedané, pri nastavení atribútu &lt;b&gt;_startPosition&lt;/b&gt; dôjde k prepísaniu hodnoty aj v druhom widgete preto, lebo oba widgety sa odkazujú na tú istú premennú v rámci toho istého
			&lt;b&gt;scope&lt;/b&gt;. A keďže v &lt;b&gt;javascripte&lt;/b&gt; je objekt a pole v podstate to isté, tento istý problém nastáva aj pri poliach. Riešením by bolo, ak by &lt;b&gt;dojo&lt;/b&gt; pri vytváraní &lt;b&gt;protypu&lt;/b&gt; triedy klonoval objekty a 
			polia. To sa však nedeje, a preto pokiaľ chceme zabrániť tomuto &lt;i&gt;&amp;quot;zdielaniu&amp;quot;&lt;/i&gt; musíme upraviť deklaráciu atribútu a jeho incializáciu vykonať až v rámci metódy &lt;b&gt;constructor&lt;/b&gt;, ktorá reprezentuje košntruktor 
			pre triedu.
		&lt;/p&gt;
		&lt;table style="width:100%;"&gt;
			&lt;tr&gt;
				&lt;td&gt;
					&lt;div class="code"&gt;
						&lt;font color="black"&gt;dojo.provide(&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;Widgets.Sample&amp;quot;&lt;/font&gt;&lt;font color="black"&gt;)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&lt;br /&gt;
						&lt;/font&gt;&lt;font color="black"&gt;dojo.require(&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;dijit._Widget&amp;quot;&lt;/font&gt;&lt;font color="black"&gt;)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&lt;br /&gt;
						&lt;/font&gt;&lt;font color="black"&gt;dojo.declare(&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;Widgets.Sample&amp;quot;&lt;/font&gt;&lt;font color="black"&gt;,&amp;nbsp;[dijit._Widget],&lt;br /&gt;
						{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_label:&amp;nbsp;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;Some&amp;nbsp;label&amp;quot;&lt;/font&gt;&lt;font color="black"&gt;,&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_duration:&amp;nbsp;&lt;/font&gt;&lt;font color="maroon"&gt;100&lt;/font&gt;&lt;font color="black"&gt;,&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_isDisabled:&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;false&lt;/font&gt;&lt;font color="black"&gt;,&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_startPosition:&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;null&lt;/font&gt;&lt;font color="black"&gt;,&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;constructor:&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;function&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;(args,&amp;nbsp;srcNodeRef)&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;args&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;args&amp;nbsp;||&amp;nbsp;{}&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="darkgreen"&gt;//&amp;nbsp;Inicializacia&amp;nbsp;az&amp;nbsp;v&amp;nbsp;kontruktore&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;this&lt;/font&gt;&lt;font color="black"&gt;._startPosition&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x:&amp;nbsp;&lt;/font&gt;&lt;font color="maroon"&gt;0&lt;/font&gt;&lt;font color="black"&gt;,&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;y:&amp;nbsp;&lt;/font&gt;&lt;font color="maroon"&gt;0&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;}&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this&lt;/font&gt;&lt;font color="black"&gt;._label&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;args.label&amp;nbsp;||&amp;nbsp;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;Some&amp;nbsp;label&amp;quot;&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this&lt;/font&gt;&lt;font color="black"&gt;._duration&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;args.duration&amp;nbsp;||&amp;nbsp;&lt;/font&gt;&lt;font color="maroon"&gt;100&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this&lt;/font&gt;&lt;font color="black"&gt;._isDisabled&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;args.isDisabled&amp;nbsp;||&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;false;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;},&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="darkgreen"&gt;//...&lt;br /&gt;
						&lt;/font&gt;&lt;font color="black"&gt;})&lt;/font&gt;&lt;font color="blue"&gt;;&lt;/font&gt;
					&lt;/div&gt;
				&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
				&lt;th style="font-size:10px;font-family:Tahoma;"&gt;
					Upravená definícia ilustračného widgetu
				&lt;/th&gt;
			&lt;/tr&gt;
		&lt;/table&gt;		
		&lt;p&gt;
			Týmto docielime to, že pri vytvorení nových inštancií nášho &lt;b&gt;widgetu&lt;/b&gt; sa bude premenná &lt;b&gt;_startPosition&lt;/b&gt; odkazovať vždy na novú premennú.
		&lt;/p&gt;
		&lt;script src="http://connect.facebook.net/en_US/all.js#xfbml=1"&gt;&lt;/script&gt;&lt;fb:like href="" show_faces="true" width="450" font=""&gt;&lt;/fb:like&gt;&lt;img src="http://blog.aspnet.sk/aggbug.aspx?PostID=307013" width="1" height="1"&gt;</description><category domain="http://blog.aspnet.sk/xxxmatko/archive/tags/dojo/default.aspx">dojo</category><category domain="http://blog.aspnet.sk/xxxmatko/archive/tags/dojo.declare/default.aspx">dojo.declare</category><category domain="http://blog.aspnet.sk/xxxmatko/archive/tags/Javascript/default.aspx">Javascript</category><category domain="http://blog.aspnet.sk/xxxmatko/archive/tags/widget/default.aspx">widget</category></item><item><title>Javascript closures - vo vnútri cyklu</title><link>http://blog.aspnet.sk/xxxmatko/archive/2011/09/29/function-scope-v-javascripte.aspx</link><pubDate>Thu, 29 Sep 2011 07:07:00 GMT</pubDate><guid isPermaLink="false">cbdfeddd-8b45-43cb-b10b-361e40cba84b:307006</guid><dc:creator>xxxmatko</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blog.aspnet.sk/xxxmatko/rsscomments.aspx?PostID=307006</wfw:commentRss><comments>http://blog.aspnet.sk/xxxmatko/archive/2011/09/29/function-scope-v-javascripte.aspx#comments</comments><description>		
&lt;p&gt;
			Správne pochopenie fungovania javascript &lt;b&gt;closures&lt;/b&gt; si vyžaduje určité zdatnosti a nie každému programátorovi webových aplikácie je jasné o čo vlastne 
			ide a aj velké percento tých lepších programátorov, ktorí aspoň tušia o čo ide, sa mu úspešne vyhýbajú.
		&lt;/p&gt;
		
&lt;p&gt;
			Využívanie &lt;b&gt;closures&lt;/b&gt; však môže veľmi zjednodušiť niektoré programátorské úkony a kedže najlepšie sa učí na príkladoch, ukážeme si  
			ako je možné veľmi efektívne využiť &lt;b&gt;closures&lt;/b&gt; v rámci bežiaceho cyklu.
		&lt;/p&gt;
		
&lt;p&gt;
			Majme cyklus s konečným počtom iterácií, pričom v každej iterácií spúšťame nejakú asynchrónnu úlohu. Káždá asynchróna úloha je identifikovateľná svojou url adresou. 
			Výsledok každej úlohy spracováva jedna callback metóda, pričom v tejto metóde chceme zistiť, ku ktorej úlohe patrí aktuálne spracovávaný výsledok. Na simuláciu asynchrónnej
			udalosti môžeme použiť metódu &lt;b&gt;setTimeout&lt;/b&gt; s náhodným nastavením času pre odpočet vykonania udalosti.
		&lt;/p&gt;
		
&lt;table style="width:100%;"&gt;
			
&lt;tr&gt;
				
&lt;td&gt;
					&lt;div class="code"&gt;
						&lt;font color="black"&gt;setTimeout(&lt;/font&gt;&lt;font color="blue"&gt;function&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;()&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;console.log(&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#39;job&amp;nbsp;done&amp;#39;&lt;/font&gt;&lt;font color="black"&gt;)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&lt;/font&gt;&lt;font color="black"&gt;},&amp;nbsp;parseInt(&lt;/font&gt;&lt;font color="blue"&gt;Math&lt;/font&gt;&lt;font color="black"&gt;.random()*&lt;/font&gt;&lt;font color="maroon"&gt;10000&lt;/font&gt;&lt;font color="black"&gt;))&lt;/font&gt;&lt;font color="blue"&gt;;&lt;/font&gt;
					&lt;/div&gt;
				&lt;/td&gt;
			&lt;/tr&gt;
			
&lt;tr&gt;
				&lt;th style="font-size:10px;font-family:Tahoma;"&gt;
					Metóda simulujúca vykonanie asynchrónnej udalosti
				&lt;/th&gt;
			&lt;/tr&gt;
		&lt;/table&gt;
	
		
&lt;p&gt;
			Táto metóda môže reprezentovať napríklad spustenie vyhľadávania objektov s použitím webovej služby. Ak máme viacero vyhľadávacích služieb, môžeme túto úlohu spustiť pre
			každú jednu službu v rámci cyklu a v callback handleri zapísať do konzoly, pre ktorú službu prišiel výsledok.
		&lt;/p&gt;
		
&lt;table style="width:100%;"&gt;
			
&lt;tr&gt;
				
&lt;td&gt;
					&lt;div class="code"&gt;
						&lt;font color="blue"&gt;var&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;urls&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;[&amp;nbsp;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;url1&amp;quot;&lt;/font&gt;&lt;font color="black"&gt;,&amp;nbsp;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;url2&amp;quot;&lt;/font&gt;&lt;font color="black"&gt;,&amp;nbsp;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;url3&amp;quot;&lt;/font&gt;&lt;font color="black"&gt;,&amp;nbsp;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;url4&amp;quot;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;]&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						for&lt;/font&gt;&lt;font color="black"&gt;(&lt;/font&gt;&lt;font color="blue"&gt;var&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;url&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;in&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;urls)&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setTimeout(&lt;/font&gt;&lt;font color="blue"&gt;function&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;()&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;console.log(&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#39;job&amp;nbsp;done&amp;nbsp;for&amp;nbsp;&amp;#39;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;+&amp;nbsp;urls[url])&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;},&amp;nbsp;parseInt(&lt;/font&gt;&lt;font color="blue"&gt;Math&lt;/font&gt;&lt;font color="black"&gt;.random()*&lt;/font&gt;&lt;font color="maroon"&gt;10000&lt;/font&gt;&lt;font color="black"&gt;))&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&lt;/font&gt;&lt;font color="black"&gt;}&lt;/font&gt;
					&lt;/div&gt;
				&lt;/td&gt;
			&lt;/tr&gt;
			
&lt;tr&gt;
				&lt;th style="font-size:10px;font-family:Tahoma;"&gt;
					Spustenie asynchrónnej udalosti v tele cyklu
				&lt;/th&gt;
			&lt;/tr&gt;
		&lt;/table&gt;
		
		
&lt;p&gt;
			Keď však spustíme vyššie uvedený kód a počkáme si na výpis prijatých výsledkov, tak v konzole uvidíme nasledovný text:
		&lt;/p&gt;
		
&lt;table style="width:100%;"&gt;
			
&lt;tr&gt;
				
&lt;td&gt;
					&lt;div class="code" style="color:#000000;"&gt;

						job&amp;nbsp;done&amp;nbsp;for&amp;nbsp;url4&lt;br /&gt;
						job&amp;nbsp;done&amp;nbsp;for&amp;nbsp;url4&lt;br /&gt;
						job&amp;nbsp;done&amp;nbsp;for&amp;nbsp;url4&lt;br /&gt;
						job&amp;nbsp;done&amp;nbsp;for&amp;nbsp;url4					
					&lt;/div&gt;
				&lt;/td&gt;
			&lt;/tr&gt;
			
&lt;tr&gt;
				&lt;th style="font-size:10px;font-family:Tahoma;"&gt;
					Výsledok viacnásobného spustenia asynchrónnej udalosti
				&lt;/th&gt;
			&lt;/tr&gt;
		&lt;/table&gt;
		
		
&lt;p&gt;
			Dôvod, prečo je tomu tak, spočíva v tom, že síce sa asynchrónna udalosť spúšťa zvlášť pre každú url adresu, callback handler pre každú udalosť je vykonaný v tom istom &lt;b&gt;scope-e&lt;/b&gt;, 
			v rámci ktorého je hodnota indexu &lt;b&gt;url&lt;/b&gt; rovná číslu 3 (na túto hodnotu bol index nastavený pri poslednej iterácii) a teda pre každé volanie callbacku získame url 
			adresu pre posledný job v rade. Riešením je použitie &lt;b&gt;closure&lt;/b&gt; a teda vytvorenie vlastného &lt;b&gt;scope&lt;/b&gt; pre každé jedno volanie. 
		&lt;/p&gt;
		
&lt;table style="width:100%;"&gt;
			
&lt;tr&gt;
				
&lt;td&gt;
					&lt;div class="code"&gt;
						&lt;font color="blue"&gt;var&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;urls&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;[&amp;nbsp;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;url1&amp;quot;&lt;/font&gt;&lt;font color="black"&gt;,&amp;nbsp;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;url2&amp;quot;&lt;/font&gt;&lt;font color="black"&gt;,&amp;nbsp;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;url3&amp;quot;&lt;/font&gt;&lt;font color="black"&gt;,&amp;nbsp;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;url4&amp;quot;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;]&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						for&lt;/font&gt;&lt;font color="black"&gt;(&lt;/font&gt;&lt;font color="blue"&gt;var&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;url&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;in&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;urls)&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(&lt;/font&gt;&lt;font color="blue"&gt;&lt;font color="#ff0000"&gt;&lt;b&gt;function&lt;/b&gt;&lt;sup&gt;&lt;b&gt;1&lt;/b&gt;&lt;/sup&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="black"&gt;(&lt;font color="#ff0000"&gt;&lt;b&gt;u&lt;/b&gt;&lt;sup&gt;&lt;b&gt;2&lt;/b&gt;&lt;/sup&gt;&lt;/font&gt;)&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setTimeout(&lt;/font&gt;&lt;font color="blue"&gt;function&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;()&amp;nbsp;{&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;console.log(&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#39;job&amp;nbsp;done&amp;nbsp;for&amp;nbsp;&amp;#39;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;+&amp;nbsp;u)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;},&amp;nbsp;parseInt(&lt;/font&gt;&lt;font color="blue"&gt;Math&lt;/font&gt;&lt;font color="black"&gt;.random()*&lt;/font&gt;&lt;font color="maroon"&gt;10000&lt;/font&gt;&lt;font color="black"&gt;))&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;})(&lt;font color="#ff0000"&gt;&lt;b&gt;urls[url]&lt;/b&gt;&lt;sup&gt;&lt;b&gt;3&lt;/b&gt;&lt;/sup&gt;&lt;/font&gt;)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;br /&gt;
						&lt;/font&gt;&lt;font color="black"&gt;}&lt;/font&gt;				
					&lt;/div&gt;
				&lt;/td&gt;
			&lt;/tr&gt;
			
&lt;tr&gt;
				&lt;th style="font-size:10px;font-family:Tahoma;"&gt;
					Použitie closure na vytvorenie nového scope
				&lt;/th&gt;
			&lt;/tr&gt;
		&lt;/table&gt;
	
		
&lt;p&gt;
			Podstata spočíva v tom, že namiesto toho, aby sme rovno spustili asynchrónnu udalosť, vytvoríme pomocnú metódu (&lt;sup&gt;1&lt;/sup&gt;), ktorá má jeden vstupný argument (&lt;sup&gt;2&lt;/sup&gt;) a tento 
			argument predáva ďalej našej asynchrónnej metóde. Následne túto metódu ihneď spustíme, pričom ako vstupný parameter použijeme url adresu služby (&lt;sup&gt;3&lt;/sup&gt;). Týmto docielime to, 
			že callback handler pre jednotlivé udalosti bude spúšťaný v rámci &lt;b&gt;scop-u&lt;/b&gt; našej pomocnej metódy a keďže pre každé volanie našej pomocnej metódy je vytvorený nový &lt;b&gt;scope&lt;/b&gt;,
			v rámci ktorého obsahuje premenná &lt;b&gt;u&lt;/b&gt; vždy inú hodnotu url adresy služby, vieme odsledovať, ktorý job bol práve skončený.
		&lt;/p&gt;

		&lt;script src="http://connect.facebook.net/en_US/all.js#xfbml=1"&gt;&lt;/script&gt;&lt;fb:like href="" show_faces="true" width="450" font=""&gt;&lt;/fb:like&gt;&lt;img src="http://blog.aspnet.sk/aggbug.aspx?PostID=307006" width="1" height="1"&gt;</description><category domain="http://blog.aspnet.sk/xxxmatko/archive/tags/closure/default.aspx">closure</category><category domain="http://blog.aspnet.sk/xxxmatko/archive/tags/Javascript/default.aspx">Javascript</category></item><item><title>Ako pridať Intellisense pre vlastnú config section vo web.config</title><link>http://blog.aspnet.sk/xxxmatko/archive/2011/07/13/ako-prida-intellisense-pre-vlastnu-config-section-vo-web-config.aspx</link><pubDate>Wed, 13 Jul 2011 13:17:00 GMT</pubDate><guid isPermaLink="false">cbdfeddd-8b45-43cb-b10b-361e40cba84b:306962</guid><dc:creator>xxxmatko</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blog.aspnet.sk/xxxmatko/rsscomments.aspx?PostID=306962</wfw:commentRss><comments>http://blog.aspnet.sk/xxxmatko/archive/2011/07/13/ako-prida-intellisense-pre-vlastnu-config-section-vo-web-config.aspx#comments</comments><description>Každý, kto sa už niekedy stretol s nastavovaním &lt;b&gt;custom config sections&lt;/b&gt; vo &lt;b&gt;web.config&lt;/b&gt;-u, mi dá asi za pravdu, keď poviem, 
		že konfigurovať takúto sekciu nemusí byť práve ľahké. Zvlášť preto, že nie vždy programátor vie, aké všetky elementy, prípadné atribúty, 
		sú danou sekciou podporované a to už vôbec nehovorím o hodnotách atribútov. Tento problém je možné odstrániť využitím &lt;b&gt;Intellisense&lt;/b&gt;,
		ktorý poskytuje &lt;b&gt;Visual Studio&lt;/b&gt;.&lt;p&gt;Intellisense, ktorý je k dispozícii pri editácii web.config-u, je zobrazovaný na základe &lt;b&gt;xsd schém&lt;/b&gt;, ktoré definujú štruktúru 
		jednotlivých elementov ako aj súboru ako takého. Ak teda chceme rozšíriť Intellisense Visual Studia pri editácií web.config-u, stačí 
		rozšíriť existujúce schémy. Jeden zo spôsobov, ako to spraviť, spočíva v tom, že si vytvoríme xsd súbor, ktorý bude definovať schému pre 
		zvolenú config section.
	&lt;/p&gt;
	
&lt;table style="width:100%;"&gt;
		
&lt;tr&gt;
			
&lt;td&gt;
				&lt;div class="code"&gt;
					&lt;font color="blue"&gt;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;xsd:schema&lt;/font&gt;&lt;font color="red"&gt;&amp;nbsp;attributeFormDefault&lt;/font&gt;&lt;font color="blue"&gt;=&amp;quot;unqualified&amp;quot;&lt;/font&gt;&lt;font color="red"&gt;&amp;nbsp;elementFormDefault&lt;/font&gt;&lt;font color="blue"&gt;=&amp;quot;qualified&amp;quot;&lt;/font&gt;&lt;font color="red"&gt; version&lt;/font&gt;&lt;font color="blue"&gt;=&amp;quot;1.0&amp;quot;&lt;/font&gt;&lt;font color="red"&gt; xmlns:xsd&lt;/font&gt;&lt;font color="blue"&gt;=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
					&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;xsd:element&lt;/font&gt;&lt;font color="red"&gt;&amp;nbsp;name&lt;/font&gt;&lt;font color="blue"&gt;=&amp;quot;system.mapservice&amp;quot;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
					&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;xsd:complexType&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
					&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;xsd:sequence&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
					&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;xsd:element&lt;/font&gt;&lt;font color="red"&gt;&amp;nbsp;name&lt;/font&gt;&lt;font color="blue"&gt;=&amp;quot;themes&amp;quot;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
					&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;xsd:complexType&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
					&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;xsd:sequence&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
					&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;xsd:element&lt;/font&gt;&lt;font color="red"&gt;&amp;nbsp;maxOccurs&lt;/font&gt;&lt;font color="blue"&gt;=&amp;quot;unbounded&amp;quot;&lt;/font&gt;&lt;font color="red"&gt;&amp;nbsp;name&lt;/font&gt;&lt;font color="blue"&gt;=&amp;quot;add&amp;quot;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
					&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;xsd:complexType&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
					&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;xsd:attribute&lt;/font&gt;&lt;font color="red"&gt;&amp;nbsp;name&lt;/font&gt;&lt;font color="blue"&gt;=&amp;quot;key&amp;quot;&lt;/font&gt;&lt;font color="red"&gt;&amp;nbsp;type&lt;/font&gt;&lt;font color="blue"&gt;=&amp;quot;xsd:string&amp;quot;&lt;/font&gt;&lt;font color="red"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;/&amp;gt;&lt;br /&gt;
					&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;xsd:attribute&lt;/font&gt;&lt;font color="red"&gt;&amp;nbsp;name&lt;/font&gt;&lt;font color="blue"&gt;=&amp;quot;url&amp;quot;&lt;/font&gt;&lt;font color="red"&gt;&amp;nbsp;type&lt;/font&gt;&lt;font color="blue"&gt;=&amp;quot;xsd:string&amp;quot;&lt;/font&gt;&lt;font color="red"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;/&amp;gt;&lt;br /&gt;
					&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;xsd:attribute&lt;/font&gt;&lt;font color="red"&gt;&amp;nbsp;name&lt;/font&gt;&lt;font color="blue"&gt;=&amp;quot;id&amp;quot;&lt;/font&gt;&lt;font color="red"&gt;&amp;nbsp;type&lt;/font&gt;&lt;font color="blue"&gt;=&amp;quot;xsd:int&amp;quot;&lt;/font&gt;&lt;font color="red"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;/&amp;gt;&lt;br /&gt;
					&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;xsd:attribute&lt;/font&gt;&lt;font color="red"&gt;&amp;nbsp;name&lt;/font&gt;&lt;font color="blue"&gt;=&amp;quot;primaryField&amp;quot;&lt;/font&gt;&lt;font color="red"&gt;&amp;nbsp;type&lt;/font&gt;&lt;font color="blue"&gt;=&amp;quot;xsd:string&amp;quot;&lt;/font&gt;&lt;font color="red"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;/&amp;gt;&lt;br /&gt;
					&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;xsd:attribute&lt;/font&gt;&lt;font color="red"&gt;&amp;nbsp;name&lt;/font&gt;&lt;font color="blue"&gt;=&amp;quot;borderWidth&amp;quot;&lt;/font&gt;&lt;font color="red"&gt;&amp;nbsp;use&lt;/font&gt;&lt;font color="blue"&gt;=&amp;quot;optional&amp;quot;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
					&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;xsd:simpleType&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
					&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;xsd:restriction&lt;/font&gt;&lt;font color="red"&gt;&amp;nbsp;base&lt;/font&gt;&lt;font color="blue"&gt;=&amp;quot;xsd:int&amp;quot;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
					&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;xsd:enumeration&lt;/font&gt;&lt;font color="red"&gt;&amp;nbsp;value&lt;/font&gt;&lt;font color="blue"&gt;=&amp;quot;1&amp;quot;&lt;/font&gt;&lt;font color="red"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;/&amp;gt;&lt;br /&gt;
					&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;xsd:enumeration&lt;/font&gt;&lt;font color="red"&gt;&amp;nbsp;value&lt;/font&gt;&lt;font color="blue"&gt;=&amp;quot;2&amp;quot;&lt;/font&gt;&lt;font color="red"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;/&amp;gt;&lt;br /&gt;
					&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;xsd:enumeration&lt;/font&gt;&lt;font color="red"&gt;&amp;nbsp;value&lt;/font&gt;&lt;font color="blue"&gt;=&amp;quot;3&amp;quot;&lt;/font&gt;&lt;font color="red"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;/&amp;gt;&lt;br /&gt;
					&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;xsd:enumeration&lt;/font&gt;&lt;font color="red"&gt;&amp;nbsp;value&lt;/font&gt;&lt;font color="blue"&gt;=&amp;quot;4&amp;quot;&lt;/font&gt;&lt;font color="red"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;/&amp;gt;&lt;br /&gt;
					&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;xsd:enumeration&lt;/font&gt;&lt;font color="red"&gt;&amp;nbsp;value&lt;/font&gt;&lt;font color="blue"&gt;=&amp;quot;5&amp;quot;&lt;/font&gt;&lt;font color="red"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;/&amp;gt;&lt;br /&gt;
					&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;xsd:enumeration&lt;/font&gt;&lt;font color="red"&gt;&amp;nbsp;value&lt;/font&gt;&lt;font color="blue"&gt;=&amp;quot;6&amp;quot;&lt;/font&gt;&lt;font color="red"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;/&amp;gt;&lt;br /&gt;
					&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;/font&gt;&lt;font color="maroon"&gt;xsd:restriction&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
					&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="maroon"&gt;xsd:simpleType&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
					&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="maroon"&gt;xsd:attribute&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
					&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;xsd:attribute&lt;/font&gt;&lt;font color="red"&gt;&amp;nbsp;name&lt;/font&gt;&lt;font color="blue"&gt;=&amp;quot;borderColor&amp;quot;&lt;/font&gt;&lt;font color="red"&gt;&amp;nbsp;type&lt;/font&gt;&lt;font color="blue"&gt;=&amp;quot;xsd:string&amp;quot;&lt;/font&gt;&lt;font color="red"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;/&amp;gt;&lt;br /&gt;
					&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;xsd:attribute&lt;/font&gt;&lt;font color="red"&gt;&amp;nbsp;name&lt;/font&gt;&lt;font color="blue"&gt;=&amp;quot;fillColor&amp;quot;&lt;/font&gt;&lt;font color="red"&gt;&amp;nbsp;type&lt;/font&gt;&lt;font color="blue"&gt;=&amp;quot;xsd:string&amp;quot;&lt;/font&gt;&lt;font color="red"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;/&amp;gt;&lt;br /&gt;
					&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;/font&gt;&lt;font color="maroon"&gt;xsd:complexType&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
					&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="maroon"&gt;xsd:element&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
					&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="maroon"&gt;xsd:sequence&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
					&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="maroon"&gt;xsd:complexType&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
					&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="maroon"&gt;xsd:element&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
					&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="maroon"&gt;xsd:sequence&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
					&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="maroon"&gt;xsd:complexType&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
					&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="maroon"&gt;xsd:element&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
					&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="maroon"&gt;xsd:schema&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;
				&lt;/div&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
		
&lt;tr&gt;
			&lt;th style="font-size:10px;font-family:Tahoma;"&gt;
				Príklad xsd schémy &amp;quot;MapServiceConfigSection.xsd&amp;quot;
			&lt;/th&gt;
		&lt;/tr&gt;
	&lt;/table&gt;
	
&lt;p&gt;
		Následne túto schému pripojíme k pôvodnému súboru príkazom &lt;span style="font-weight:bold;"&gt;include&lt;/span&gt;, v ktorom definujume umiestnenie našej vlastnej schémy. 
		Súbory s originálnymi schémami, ktoré využíva Visual Studio, nájdeme v priečinku &lt;span style="font-weight:bold;"&gt;&lt;span style="font-style:italic;"&gt;
		&lt;span style="font-weight:bold;"&gt;&amp;quot;&amp;lt;Visual Studio Install Folder&amp;gt;\Xml\Schemas\&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; (napr.: &amp;quot;c:\Program 
		Files (x86)\Microsoft Visual Studio 10.0\Xml\Schemas&amp;quot;). Súbor, ktorý treba doplniť príkazom include má názov v tvare &lt;span style="font-style:italic;"&gt;
		&lt;span style="font-weight:bold;"&gt;&amp;quot;DotNetConfig[verzia framework-u].xsd&amp;quot; &lt;/span&gt;&lt;/span&gt;(napr.: &amp;quot;DotNetConfig.xsd&amp;quot;). Príkaz include treba vložiť na prvé miesto root 
		elementu &lt;span style="font-weight:bold;"&gt;schema&lt;/span&gt;, uložiť zmeny vykonané v súbore a je to. 
	&lt;/p&gt;
	
&lt;table style="width:100%;"&gt;
		
&lt;tr&gt;
			
&lt;td&gt;
				&lt;div class="code"&gt;
					&lt;font color="blue"&gt;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;?xml&lt;/font&gt;&lt;font color="red"&gt;&amp;nbsp;version&lt;/font&gt;&lt;font color="blue"&gt;=&amp;quot;1.0&amp;quot;&lt;/font&gt;&lt;font color="red"&gt;&amp;nbsp;encoding&lt;/font&gt;&lt;font color="blue"&gt;=&amp;quot;us-ascii&amp;quot;?&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
					&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;xs:schema&lt;/font&gt;&lt;font color="red"&gt;&amp;nbsp;xmlns:xs&lt;/font&gt;&lt;font color="blue"&gt;=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&lt;/font&gt;&lt;font color="red"&gt;&amp;nbsp;&lt;br /&gt;
					&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xmlns:vs&lt;/font&gt;&lt;font color="blue"&gt;=&amp;quot;http://schemas.microsoft.com/Visual-Studio-Intellisense&amp;quot;&lt;/font&gt;&lt;font color="red"&gt;&amp;nbsp;&lt;br /&gt;
					&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;elementFormDefault&lt;/font&gt;&lt;font color="blue"&gt;=&amp;quot;qualified&amp;quot;&lt;/font&gt;&lt;font color="red"&gt;&amp;nbsp;&lt;br /&gt;
					&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;attributeFormDefault&lt;/font&gt;&lt;font color="blue"&gt;=&amp;quot;unqualified&amp;quot;&lt;/font&gt;&lt;font color="red"&gt;&amp;nbsp;&lt;br /&gt;
					&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;vs:helpNamespace&lt;/font&gt;&lt;font color="blue"&gt;=&amp;quot;http://schemas.microsoft.com/.NetConfiguration/v2.0&amp;quot;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
					&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
					&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="font-weight:bold;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/font&gt;&lt;font style="font-weight:bold;" color="blue"&gt;&amp;lt;&lt;/font&gt;&lt;font style="font-weight:bold;" color="maroon"&gt;xs:include&lt;/font&gt;&lt;font style="font-weight:bold;" color="red"&gt;&amp;nbsp;schemaLocation&lt;/font&gt;&lt;font color="blue"&gt;&lt;span style="font-weight:bold;"&gt;=&amp;quot;MapServiceConfigSection.xsd&amp;quot;/&amp;gt;&lt;/span&gt;&lt;br /&gt;
					&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
					&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;xs:element&lt;/font&gt;&lt;font color="red"&gt;&amp;nbsp;name&lt;/font&gt;&lt;font color="blue"&gt;=&amp;quot;configuration&amp;quot;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
					&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;xs:complexType&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
					&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;xs:choice&lt;/font&gt;&lt;font color="red"&gt;&amp;nbsp;minOccurs&lt;/font&gt;&lt;font color="blue"&gt;=&amp;quot;0&amp;quot;&lt;/font&gt;&lt;font color="red"&gt;&amp;nbsp;maxOccurs&lt;/font&gt;&lt;font color="blue"&gt;=&amp;quot;unbounded&amp;quot;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
					&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;xs:any&lt;/font&gt;&lt;font color="red"&gt;&amp;nbsp;namespace&lt;/font&gt;&lt;font color="blue"&gt;=&amp;quot;##any&amp;quot;&lt;/font&gt;&lt;font color="red"&gt;&amp;nbsp;processContents&lt;/font&gt;&lt;font color="blue"&gt;=&amp;quot;lax&amp;quot;&lt;/font&gt;&lt;font color="red"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;/&amp;gt;&lt;br /&gt;
					&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;/font&gt;&lt;font color="maroon"&gt;xs:choice&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
					&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;&lt;/font&gt;&lt;font color="maroon"&gt;xs:anyAttribute&lt;/font&gt;&lt;font color="red"&gt;&amp;nbsp;namespace&lt;/font&gt;&lt;font color="blue"&gt;=&amp;quot;http://schemas.microsoft.com/XML-Document-Transform&amp;quot;&lt;/font&gt;&lt;font color="red"&gt;&amp;nbsp;processContents&lt;/font&gt;&lt;font color="blue"&gt;=&amp;quot;strict&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;/font&gt;&lt;font color="maroon"&gt;xs:complexType&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
					&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="maroon"&gt;xs:element&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;br /&gt;
					&lt;/font&gt;&lt;font color="blue"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="maroon"&gt;xs:schema&lt;/font&gt;&lt;font color="blue"&gt;&amp;gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;/font&gt;
				&lt;/div&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
		
&lt;tr&gt;
			&lt;th style="font-size:10px;font-family:Tahoma;"&gt;
				Použitie príkazu include na zahrnutie custom xsd schémy
			&lt;/th&gt;
		&lt;/tr&gt;
	&lt;/table&gt;
	
&lt;p&gt;
		Visual Studio automaticky načíta danú schému (bez nutnosti uplatnenia 
		metódy &amp;quot;vystúpiť/nastúpiť&amp;quot;) a pri editácii web.configu ponúkne Intellisense (ale len v prípade, že v nami definovanej schéme nie je žiadna chyba ;)).	
	&lt;/p&gt;
	
	
&lt;table style="width:100%;"&gt;
		
&lt;tr&gt;
			
&lt;td&gt;
&lt;img src="http://blog.aspnet.sk/blogs/xxxmatko/Ako%20pridat%20Intellisense%20pre%20vlastn%C3%BA%20config%20section%20vo%20web.config_intellisense.png" border="0" alt="" /&gt;
				
			&lt;br /&gt;&lt;/td&gt;
		&lt;/tr&gt;
		
&lt;tr&gt;
			&lt;th style="font-size:10px;font-family:Tahoma;"&gt;
				Ukážka využitia Intellisense
			&lt;/th&gt;
		&lt;/tr&gt;
	&lt;/table&gt;
	

		&lt;script src="http://connect.facebook.net/en_US/all.js#xfbml=1"&gt;&lt;/script&gt;&lt;fb:like href="" show_faces="true" width="450" font=""&gt;&lt;/fb:like&gt;&lt;img src="http://blog.aspnet.sk/aggbug.aspx?PostID=306962" width="1" height="1"&gt;</description><category domain="http://blog.aspnet.sk/xxxmatko/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blog.aspnet.sk/xxxmatko/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blog.aspnet.sk/xxxmatko/archive/tags/XML/default.aspx">XML</category><category domain="http://blog.aspnet.sk/xxxmatko/archive/tags/XSD/default.aspx">XSD</category></item></channel></rss>
