tag:blogger.com,1999:blog-10025975786966939852024-02-20T22:25:11.012-08:00Developer Stuff!A collection of my uncategorized thoughts as a Software DeveloperAnonymoushttp://www.blogger.com/profile/17445191350548842437noreply@blogger.comBlogger87125tag:blogger.com,1999:blog-1002597578696693985.post-60906246311326937392014-08-04T18:35:00.001-07:002014-08-04T18:35:31.264-07:00<h3 class="post-title entry-title" itemprop="name" style="background-color: white; color: #29aae1; font-family: Molengo; font-size: 24px; font-style: italic; margin: 0px; position: relative;">
How to split a comma separated string and loop it's values in SQL Server</h3>
<div class="post-header" style="background-color: white; font-family: 'Open Sans'; font-size: 14px; line-height: 1.6; margin: 0px 0px 1em;">
<div class="post-header-line-1">
</div>
</div>
<div class="post-body entry-content" id="post-body-5119535566639084529" itemprop="description articleBody" style="background-color: white; font-family: 'Open Sans'; font-size: 14px; line-height: 19.600000381469727px; position: relative; width: 736px;">
Here is a simple T-SQL script for SQL Server that will split a comma separated string and loop on the values.<br />
It's a simple way to create a array/list of things in SQL Server, and then do something on the values of the list.<br />
These values can be anything: table names, stored procedures, query...<br />
<br />
<b>Application note:</b> <i>the value list string must end with a comma ","</i><br />
<br />
<pre style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial;"><span style="color: maroon; font-weight: bold;">DECLARE</span> <span style="color: #797997;">@valueList</span> <span style="color: maroon; font-weight: bold;">varchar</span><span style="color: #808030;">(</span><span style="color: #008c00;">8000</span><span style="color: #808030;">)</span>
<span style="color: maroon; font-weight: bold;">DECLARE</span> <span style="color: #797997;">@pos</span> <span style="color: maroon; font-weight: bold;">INT</span>
<span style="color: maroon; font-weight: bold;">DECLARE</span> <span style="color: #797997;">@len</span> <span style="color: maroon; font-weight: bold;">INT</span>
<span style="color: maroon; font-weight: bold;">DECLARE</span> <span style="color: #797997;">@value</span> <span style="color: maroon; font-weight: bold;">varchar</span><span style="color: #808030;">(</span><span style="color: #008c00;">8000</span><span style="color: #808030;">)</span>
<span style="color: maroon; font-weight: bold;">SET</span> <span style="color: #797997;">@valueList</span> <span style="color: #808030;">=</span> <span style="color: #0000e6;">'aa,bb,cc,f,sduygfdctys,w,e,r,t,sd sdf sdf,yyy yyy yy,'</span>
<span style="color: maroon; font-weight: bold;">set</span> <span style="color: #797997;">@pos</span> <span style="color: #808030;">=</span> <span style="color: #008c00;">0</span>
<span style="color: maroon; font-weight: bold;">set</span> <span style="color: #797997;">@len</span> <span style="color: #808030;">=</span> <span style="color: #008c00;">0</span>
<span style="color: maroon; font-weight: bold;">WHILE</span> <span style="color: #bb7977; font-weight: bold;">CHARINDEX</span><span style="color: #808030;">(</span><span style="color: #0000e6;">','</span><span style="color: #808030;">,</span> <span style="color: #797997;">@valueList</span><span style="color: #808030;">,</span> <span style="color: #797997;">@pos</span><span style="color: #808030;">+</span><span style="color: #008c00;">1</span><span style="color: #808030;">)</span><span style="color: #808030;">></span><span style="color: #008c00;">0</span>
<span style="color: maroon; font-weight: bold;">BEGIN</span>
<span style="color: maroon; font-weight: bold;">set</span> <span style="color: #797997;">@len</span> <span style="color: #808030;">=</span> <span style="color: #bb7977; font-weight: bold;">CHARINDEX</span><span style="color: #808030;">(</span><span style="color: #0000e6;">','</span><span style="color: #808030;">,</span> <span style="color: #797997;">@valueList</span><span style="color: #808030;">,</span> <span style="color: #797997;">@pos</span><span style="color: #808030;">+</span><span style="color: #008c00;">1</span><span style="color: #808030;">)</span> <span style="color: #808030;">-</span> <span style="color: #797997;">@pos</span>
<span style="color: maroon; font-weight: bold;">set</span> <span style="color: #797997;">@value</span> <span style="color: #808030;">=</span> <span style="color: maroon; font-weight: bold;">SUBSTRING</span><span style="color: #808030;">(</span><span style="color: #797997;">@valueList</span><span style="color: #808030;">,</span> <span style="color: #797997;">@pos</span><span style="color: #808030;">,</span> <span style="color: #797997;">@len</span><span style="color: #808030;">)</span>
<span style="color: dimgrey;">--SELECT @pos, @len, @value</span><span style="color: #797997;"> /*this is here for debugging*/</span>
<span style="color: maroon; font-weight: bold;">PRINT</span> <span style="color: #797997;">@value</span>
<span style="color: dimgrey;">--Here is you value</span>
<span style="color: dimgrey;">--DO YOUR STUFF HERE</span>
<span style="color: dimgrey;">--DO YOUR STUFF HERE</span>
<span style="color: dimgrey;">--DO YOUR STUFF HERE</span>
<span style="color: dimgrey;">--DO YOUR STUFF HERE</span>
<span style="color: dimgrey;">--DO YOUR STUFF HERE</span>
<span style="color: maroon; font-weight: bold;">set</span> <span style="color: #797997;">@pos</span> <span style="color: #808030;">=</span> <span style="color: #bb7977; font-weight: bold;">CHARINDEX</span><span style="color: #808030;">(</span><span style="color: #0000e6;">','</span><span style="color: #808030;">,</span> <span style="color: #797997;">@valueList</span><span style="color: #808030;">,</span> <span style="color: #797997;">@pos</span><span style="color: #808030;">+</span><span style="color: #797997;">@len</span><span style="color: #808030;">)</span> <span style="color: #808030;">+</span><span style="color: #008c00;">1</span>
<span style="color: maroon; font-weight: bold;">END</span>
</pre>
<br />
The output of this script is:<br />
<i><span style="font-family: 'Courier New', Courier, monospace;"><br /></span></i><i><span style="font-family: 'Courier New', Courier, monospace;"> aa<br /> bb<br /> cc<br /> f<br /> sduygfdctys<br /> w<br /> e<br /> r<br /> t<br /> sd sdf sdf<br /> yyy yyy yy</span></i><br />
<br />
SQL Code colored with <a href="http://www.tohtml.com/sql/" style="color: #9900ff; text-decoration: none;" target="_blank">this</a> syntax highlighter<br />
<div style="clear: both;">
</div>
</div>
<div class="post-footer" style="background-color: white; font-family: 'Open Sans'; font-size: 14px; line-height: 1.6; margin: 1.5em 0px 0px;">
<div class="post-footer-line post-footer-line-1">
<span class="post-author vcard" style="margin-left: 0px; margin-right: 1em;">Posted by <span class="fn" itemprop="author" itemscope="itemscope" itemtype="http://schema.org/Person"><a class="g-profile" data-gapiattached="true" data-gapiscan="true" data-onload="true" href="https://plus.google.com/102812103001173245155" rel="author" style="color: #9900ff; text-decoration: none;" title="author profile"><span itemprop="name">Massimiliano Ferrari</span> </a></span></span></div>
</div>
Anonymoushttp://www.blogger.com/profile/17445191350548842437noreply@blogger.comtag:blogger.com,1999:blog-1002597578696693985.post-30975716806082260042014-02-16T18:55:00.003-08:002014-02-16T18:56:46.692-08:00<span style="font-size: large;"><b>Contrasting Three Projects</b></span> <br />
Three projects stand out in my memory as vivid examples of how dramatically domain design<br />
practice can affect development results. Although all three projects delivered useful software, only<br />
one achieved its ambitious objectives and produced complex software that continued to evolve to<br />
meet the ongoing needs of the organization.<br />
I watched one project get out of the gate fast, by delivering a useful, simple Web-based trading<br />
system. Developers were flying by the seat of their pants, but this didn't hinder them because<br />
simple software can be written with little attention to design. As a result of this initial success,<br />
expectations for future development were sky-high. That is when I was asked to work on the<br />
second version. When I took a close look, I saw that they lacked a domain model, or even a<br />
common language on the project, and were saddled with an unstructured design. The project<br />
leaders did not agree with my assessment, and I declined the job. A year later, the team found<br />
itself bogged down and unable to deliver a second version. Although their use of technology was<br />
not exemplary, it was the business logic that over-came them. Their first release had ossified<br />
prematurely into a high-maintenance legacy.<br />
Lifting this ceiling on complexity calls for a more serious approach to the design of domain logic.<br />
Early in my career, I was fortunate to end up on a project that did emphasize domain design. This<br />
project, in a domain at least as complex as the first one, also started with a modest initial success,<br />
delivering a simple application for institutional traders. But in this case, the initial delivery was<br />
followed up with successive accelerations of development. Each iteration opened exciting new<br />
options for integrating and elaborating the functionality of the previous release. The team was able<br />
to respond to the needs of the traders with flexibility and expanding capability. This upward<br />
trajectory was directly attributable to an incisive domain model, repeatedly refined and expressed<br />
in code. As the team gained new insight into the domain, the model deepened. The quality of<br />
communication improved not only among developers but also between developers and domain<br />
experts, and the design—far from imposing an ever-heavier maintenance burden—became easier<br />
to modify and extend.<br />
Unfortunately, projects don't arrive at such a virtuous cycle just by taking models seriously. One<br />
project from my past started with lofty aspirations to build a global enterprise system based on a<br />
domain model, but after years of disappointment, it lowered its sights and settled into<br />
conventionality. The team had good tools and a good understanding of the business, and it gave<br />
careful attention to modeling. But a poorly chosen separation of developer roles disconnected<br />
modeling from implementation, so that the design did not reflect the deep analysis that was going<br />
on. In any case, the design of detailed business objects was not rigorous enough to support<br />
combining them in elaborate applications. Repeated iteration produced no improvement in the<br />
code, due to uneven skill levels among developers, who had no awareness of the informal body of<br />
style and technique for creating model-based objects that also function as practical, running<br />
software. As months rolled by, development work became mired in complexity and the team lost<br />
its cohesive vision of the system. After years of effort, the project did produce modest, useful<br />
software, but the team had given up its early ambitions along with the model focus.<br />
<br />
Story of Eric Evans from his book <a href="http://dddcommunity.org/book/evans_2003/">http://dddcommunity.org/book/evans_2003/</a><br />
<br />
<br />Anonymoushttp://www.blogger.com/profile/17445191350548842437noreply@blogger.comtag:blogger.com,1999:blog-1002597578696693985.post-6813399325678666042013-10-16T23:56:00.000-07:002013-10-16T23:56:00.046-07:00Cleaning Up Deep Callback Nesting With Node's EventEmitter by Rob Conery<section class="post-summary sixteen columns" style="background-color: white; border: 0px; color: #444444; display: inline; float: left; font-family: 'Open Sans', sans-serif; font-size: 12px; line-height: 24px; margin: 0px 10px 0px 0px; padding: 0px; vertical-align: baseline; width: 940px;"><div style="border: none; font-family: Lato, sans-serif; font-size: 30px; line-height: 1.3; margin-bottom: 35px; padding: 0px;">
One problem people face when starting out with Node (and Javascript in general) is handling the asynchronous, deep callback nesting issue. EventEmitters help fix that.</div>
</section><section class="post-content eleven columns alpha" style="background-color: white; border: 0px; color: #444444; display: inline; float: left; font-family: 'Open Sans', sans-serif; font-size: 12px; line-height: 24px; margin: 0px 10px 0px 0px; padding: 0px; vertical-align: baseline; width: 640px;"><article class="single-article" style="border: 0px; font-size: 1.15em; line-height: 1.6em; margin: 0px; padding: 0px; vertical-align: baseline;"><img class="lead-image" src="http://wekeroad.com/wp-content/uploads/2012/04/ChristmasTree.png" style="border: 0px; height: auto; margin: 20px 0px 15px; max-width: 100%; padding: 0px; vertical-align: baseline;" /><h2 style="border-bottom-color: rgb(221, 221, 221); border-bottom-style: solid; border-width: 0px 0px 1px; font-family: Lato, sans-serif; font-weight: 400; line-height: 30px; margin: 0px 0px 10px; padding: 0px 0px 10px; vertical-align: baseline;">
The Registration Problem</h2>
<div style="font-size: 1.15em; line-height: 1.6em; margin-bottom: 1.65em; margin-top: 1.65em;">
Consider this: you want customers to register with your site. When they do, a number of things need to happen:</div>
<ol style="border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">
<li style="border: 0px; font-size: 1.15em; line-height: 1.6em; margin: 0px; padding: 0px; vertical-align: baseline;">The information needs to be validated</li>
<li style="border: 0px; font-size: 1.15em; line-height: 1.6em; margin: 0px; padding: 0px; vertical-align: baseline;">The customer record inserted</li>
<li style="border: 0px; font-size: 1.15em; line-height: 1.6em; margin: 0px; padding: 0px; vertical-align: baseline;">An email sent to say "thank you"</li>
</ol>
<div style="font-size: 1.15em; line-height: 1.6em; margin-bottom: 1.65em; margin-top: 1.65em;">
In a typical scenario, there's probably more - but let's use this for now.</div>
<div style="font-size: 1.15em; line-height: 1.6em; margin-bottom: 1.65em; margin-top: 1.65em;">
You might know straight away how to do this in Ruby or C# - but how would you handle this with Node and Javascript?## O Christmas Tree</div>
<div style="font-size: 1.15em; line-height: 1.6em; margin-bottom: 1.65em; margin-top: 1.65em;">
This is some code that you might see in a Customers module:</div>
<div style="font-size: 1.15em; line-height: 1.6em; margin-bottom: 1.65em; margin-top: 1.65em;">
<img alt="" src="http://wekeroad.com/wp-content/uploads/2012/04/Screen-Shot-2012-04-05-at-11.22.43-AM.png" style="border: 0px; height: auto; margin: 20px 0px 15px; max-width: 100%; padding: 0px; vertical-align: baseline;" /></div>
<div style="font-size: 1.15em; line-height: 1.6em; margin-bottom: 1.65em; margin-top: 1.65em;">
Yuck.</div>
<div style="font-size: 1.15em; line-height: 1.6em; margin-bottom: 1.65em; margin-top: 1.65em;">
This code is not only hideous-looking, it's also synchronous and a nightmare to maintain. Node allows you to do this much better with EventEmitters. Let's see how to use Events to clean this code up.</div>
<h2 style="border-bottom-color: rgb(221, 221, 221); border-bottom-style: solid; border-width: 0px 0px 1px; font-family: Lato, sans-serif; font-weight: 400; line-height: 30px; margin: 0px 0px 10px; padding: 0px 0px 10px; vertical-align: baseline;">
Emit It</h2>
<div style="font-size: 1.15em; line-height: 1.6em; margin-bottom: 1.65em; margin-top: 1.65em;">
There are two ways to do this: encapsulate the eventing, or make your entire object an EventEmitter through inheritance. I'll do the latter.</div>
<div style="font-size: 1.15em; line-height: 1.6em; margin-bottom: 1.65em; margin-top: 1.65em;">
The first thing to do is reference Node's event module and the util module as well - it has some helpers we'll need. Then we rewire the module to handle the events - I'll explain in a second, but here's the final code:</div>
<div style="font-size: 1.15em; line-height: 1.6em; margin-bottom: 1.65em; margin-top: 1.65em;">
<img alt="" src="http://wekeroad.com/wp-content/uploads/2012/04/Screen-Shot-2012-04-05-at-11.28.17-AM.png" style="border: 0px; height: auto; margin: 20px 0px 15px; max-width: 100%; padding: 0px; vertical-align: baseline;" /></div>
<div style="font-size: 1.15em; line-height: 1.6em; margin-bottom: 1.65em; margin-top: 1.65em;">
So what's going on here? Well first - there are no more callbacks - we don't need them! We have events to listen to.</div>
<div style="font-size: 1.15em; line-height: 1.6em; margin-bottom: 1.65em; margin-top: 1.65em;">
I'm using Node's built-in EventEmitter object to "graft" on some functionality to my Customer object. Javascript doesn't have inheritance, per se, but you can take the prototype of one function and pop it on another.</div>
<div style="font-size: 1.15em; line-height: 1.6em; margin-bottom: 1.65em; margin-top: 1.65em;">
Node helps you with this using the "util" library. On line 42 we're telling the util to push the prototype from events.EventEmitter onto our Customer function. Notice that this is a function, not an instance of a function as I had in the first example above.</div>
<div style="font-size: 1.15em; line-height: 1.6em; margin-bottom: 1.65em; margin-top: 1.65em;">
Next, on line 7, I had to invoke the "base" constructor to be sure that I don't miss any internal instancing or setting of values. Turns out for EventEmitters you don't need to do that and you can omit this line - but it's safe to just do it, no matter what.</div>
<div style="font-size: 1.15em; line-height: 1.6em; margin-bottom: 1.65em; margin-top: 1.65em;">
In the body of each method I'm simply "emitting" an event to all listeners (there's obviously some code missing here - pretend that I have an insert routine and so on). I can emit an event for whatever happens along the way - a successful validation fires "validated", a failure might fire "validationFailed". This frees up our code to do what it needs to do and no more, making it much cleaner and clearer.</div>
<div style="font-size: 1.15em; line-height: 1.6em; margin-bottom: 1.65em; margin-top: 1.65em;">
On line 29 I've added a final event trigger if everything works out: "successfulRegistration". This is what calling code will really be interested in the most - either that or "failedRegistration" - and we pass along the customer record (more on that in a second).</div>
<div style="font-size: 1.15em; line-height: 1.6em; margin-bottom: 1.65em; margin-top: 1.65em;">
On lines 35 through 38 we've implemented a bit of workflow. This doesn't need to be inside the Customer function - you can arrange these events wherever and however you like. The calling code can remove every event listener and replace it with its own if it wanted to reorganize the flow here.Speaking of calling code, here's what it might look like:</div>
<div style="font-size: 1.15em; line-height: 1.6em; margin-bottom: 1.65em; margin-top: 1.65em;">
<img alt="" src="http://wekeroad.com/wp-content/uploads/2012/04/Screen-Shot-2012-04-05-at-11.40.12-AM.png" style="border: 0px; height: auto; margin: 20px 0px 15px; max-width: 100%; padding: 0px; vertical-align: baseline;" /></div>
<div style="font-size: 1.15em; line-height: 1.6em; margin-bottom: 1.65em; margin-top: 1.65em;">
You hook into the events, then run register() and respond as needed.</div>
<h2 style="border-bottom-color: rgb(221, 221, 221); border-bottom-style: solid; border-width: 0px 0px 1px; font-family: Lato, sans-serif; font-weight: 400; line-height: 30px; margin: 0px 0px 10px; padding: 0px 0px 10px; vertical-align: baseline;">
All Over The Place</h2>
<div style="font-size: 1.15em; line-height: 1.6em; margin-bottom: 1.65em; margin-top: 1.65em;">
Node is built on top of EventEmitters - you'll find them everywhere. Understanding them is key to writing cleaner code that's more functional and maintainable - and it also helps keep things asynchronous.</div>
<div style="font-size: 1.15em; line-height: 1.6em; margin-bottom: 1.65em; margin-top: 1.65em;">
n the first example, we had a synchronous drop all the way down - even though we were using callbacks. Our code above isn't synchronous at all - we've hooked into an event and when Node is ready, it will process the emitted event callback.</div>
<div style="font-size: 1.15em; line-height: 1.6em; margin-bottom: 1.65em; margin-top: 1.65em;">
Neat stuff!</div>
</article></section>Anonymoushttp://www.blogger.com/profile/17445191350548842437noreply@blogger.comtag:blogger.com,1999:blog-1002597578696693985.post-73014434886714528002013-10-16T18:49:00.004-07:002013-10-16T18:49:56.860-07:00Domain Specific Languages by Martin Fowler (with Rebecca Parsons)<div style="background-color: white; border: 0px; color: #333333; font-family: 'Open Sans', sans-serif; font-size: 15px; line-height: 18px; margin-bottom: 1em; margin-top: 1em; outline: 0px; padding: 0px; vertical-align: baseline;">
Domain Specific Languages (DSLs) have been around since I've been in computing, but it's hard to find much information about how to work with them. DSLs are small languages, focused on a particular aspect of a software system. You can't build a whole program with a DSL, but you often use multiple DSLs in a system mainly written in a general purpose language.</div>
<div style="background-color: white; border: 0px; color: #333333; font-family: 'Open Sans', sans-serif; font-size: 15px; line-height: 18px; margin-bottom: 1em; margin-top: 1em; outline: 0px; padding: 0px; vertical-align: baseline;">
DSLs come in two main forms: external and internal. An external DSL is a language that's parsed independently of the host general purpose language: good examples include regular expressions and CSS. External DSLs have a strong tradition in the Unix community. Internal DSLs are a particular form of API in a host general purpose language, often referred to as a <a href="http://martinfowler.com/bliki/FluentInterface.html" style="background-color: transparent; border: 0px; color: #823797; margin: 0px; outline: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;">fluent interface</a>. The way mocking libraries, such as JMock, define expectations for tests are good examples of this, as are many of the mechanisms used by Ruby on Rails. Internal DSLs also have a long tradition of usage, particularly in the Lisp community.</div>
<div style="background-color: white; border: 0px; color: #333333; font-family: 'Open Sans', sans-serif; font-size: 15px; line-height: 18px; margin-bottom: 1em; margin-top: 1em; outline: 0px; padding: 0px; vertical-align: baseline;">
People find DSLs valuable because a well-designed DSL can be much easier to program with than a traditional library. This improves programmer productivity, which is always valuable. In particular it may also improve communication with domain experts, which is an important tool for tackling one of the hardest problems in software development. CSS is an excellent example of this, most people who program CSS don't consider themselves to be programming. Despite this, however, I don't generally think that end-users will usually write in DSLs directly - it's the communication enhancement that's important.</div>
<div style="background-color: white; border: 0px; color: #333333; font-family: 'Open Sans', sans-serif; font-size: 15px; line-height: 18px; margin-bottom: 1em; margin-top: 1em; outline: 0px; padding: 0px; vertical-align: baseline;">
Although DSLs have been around for a long time, the lack of knowledge of how to program with them is a significant barrier - which is exactly why I've worked on this book. The books provides techniques to develop both internal and external DSLs, giving you both the information to choose between them and a good package of information to begin your work. I also stress the importance of layering a DSL over a library, so that you usually build both together. There's also material on code-generation, which is an occasionally essential part of working with a DSL.</div>
<div style="background-color: white; border: 0px; color: #333333; font-family: 'Open Sans', sans-serif; font-size: 15px; line-height: 18px; margin-bottom: 1em; margin-top: 1em; outline: 0px; padding: 0px; vertical-align: baseline;">
Like <a href="http://martinfowler.com/books/eaa.html" style="background-color: transparent; border: 0px; color: #823797; margin: 0px; outline: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;">P of EAA</a> this book is a <a href="http://www.martinfowler.com/bliki/DuplexBook.html" style="background-color: transparent; border: 0px; color: #823797; margin: 0px; outline: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;">Duplex Book</a>, providing both a narrative to learn about DSLs and a reference book for the details, so don't be scared by the high page count. You can get a good grasp of the topic by reading the narrative section (142 pages) and use the rest as a reference to dip into when you need it.</div>
<div style="background-color: white; border: 0px; color: #333333; font-family: 'Open Sans', sans-serif; font-size: 15px; line-height: 18px; margin-bottom: 1em; margin-top: 1em; outline: 0px; padding: 0px; vertical-align: baseline;">
Electronic copies of this book are available. Amazon has a version for kindle. <a href="http://www.informit.com/store/product.aspx?isbn=0132619369" style="background-color: transparent; border: 0px; color: #823797; margin: 0px; outline: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;">InformIT</a> has epub and pdf versions. Apple has an epub version in the ibookstore.</div>
Anonymoushttp://www.blogger.com/profile/17445191350548842437noreply@blogger.comtag:blogger.com,1999:blog-1002597578696693985.post-69831760513593812872013-10-15T18:20:00.000-07:002013-10-15T18:20:53.699-07:00SQL SERVER – How to easily work with Database Diagrams by PINAL DAVE<div style="-webkit-transition: 0ms; background-color: white; border: 0px; color: #444444; font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 23px; margin-bottom: 1.5em; opacity: 1; outline: 0px; padding: 0px; transition: 0ms; vertical-align: baseline;">
Databases are very widely used in the modern world. Regardless of the complexity of a database, each one requires in depth designing. To practice along please <strong style="-webkit-transition: 0ms; border: 0px; font-family: inherit; font-style: inherit; margin: 0px; opacity: 1; outline: 0px; padding: 0px; transition: 0ms; vertical-align: baseline;"><a href="http://bit.ly/dl-dbforge-1013" style="-webkit-transition: 0ms; border: 0px; color: #384f83; font-family: inherit; font-style: inherit; font-weight: inherit; margin: 0px; opacity: 1; outline: 0px; padding: 0px; text-decoration: none; transition: 0ms; vertical-align: baseline;" target="_blank">Download dbForge Studio now</a>. </strong></div>
<div style="-webkit-transition: 0ms; background-color: white; border: 0px; color: #444444; font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 23px; margin-bottom: 1.5em; opacity: 1; outline: 0px; padding: 0px; transition: 0ms; vertical-align: baseline;">
The right methodology of designing a database is based on the foundations of data normalization, according to which we should first define database’s key elements – entities. Afterwards the attributes of entities and relations between them are determined.</div>
<div style="-webkit-transition: 0ms; background-color: white; border: 0px; color: #444444; font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 23px; margin-bottom: 1.5em; opacity: 1; outline: 0px; padding: 0px; transition: 0ms; vertical-align: baseline;">
There is a strong opinion that the process of database designing should start with a pencil and a blank sheet of paper. This might look old-fashioned nowadays, because SQL Server provides a much wider functionality for designing databases – Database Diagrams.</div>
<div style="-webkit-transition: 0ms; background-color: white; border: 0px; color: #444444; font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 23px; margin-bottom: 1.5em; opacity: 1; outline: 0px; padding: 0px; transition: 0ms; vertical-align: baseline;">
When using SSMS for working with Database Diagrams I realized two things – on the one hand, visualization of a scheme allows designing a database more efficiently; on the other – when it came to creating a big scheme, some difficulties occurred when designing with SSMS.</div>
<div style="-webkit-transition: 0ms; background-color: white; border: 0px; color: #444444; font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 23px; margin-bottom: 1.5em; opacity: 1; outline: 0px; padding: 0px; transition: 0ms; vertical-align: baseline;">
The alternatives haven’t taken long to wait and dbForge Studio for SQL Server is one of them. Its functions offer more advantages for working with Database Diagrams.</div>
<div style="-webkit-transition: 0ms; background-color: white; border: 0px; color: #444444; font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 23px; margin-bottom: 1.5em; opacity: 1; outline: 0px; padding: 0px; transition: 0ms; vertical-align: baseline;">
For example, unlike SSMS, dbForge Studio supports an opportunity to drag-and-drop several tables at once from the Database Explorer. This is my opinion but personally I find this option very useful.</div>
<div style="-webkit-transition: 0ms; background-color: white; border: 0px; color: #444444; font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 23px; margin-bottom: 1.5em; opacity: 1; outline: 0px; padding: 0px; transition: 0ms; vertical-align: baseline;">
Another great thing is that a diagram can be saved as both a graphic file and a special XML file, which in case of identical environment can be easily opened on the other server for continuing the work.</div>
<div style="-webkit-transition: 0ms; background-color: white; border: 0px; color: #444444; font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 23px; margin-bottom: 1.5em; opacity: 1; outline: 0px; padding: 0px; transition: 0ms; vertical-align: baseline;">
<img src="http://www.pinaldave.com/bimg/dd-img1.png" /></div>
<div style="-webkit-transition: 0ms; background-color: white; border: 0px; color: #444444; font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 23px; margin-bottom: 1.5em; opacity: 1; outline: 0px; padding: 0px; transition: 0ms; vertical-align: baseline;">
During working with <strong style="-webkit-transition: 0ms; border: 0px; font-family: inherit; font-style: inherit; margin: 0px; opacity: 1; outline: 0px; padding: 0px; transition: 0ms; vertical-align: baseline;"><a href="http://bit.ly/da-blog-1013" style="-webkit-transition: 0ms; border: 0px; color: #384f83; font-family: inherit; font-style: inherit; font-weight: inherit; margin: 0px; opacity: 1; outline: 0px; padding: 0px; text-decoration: none; transition: 0ms; vertical-align: baseline;" target="_blank">dbForge Studio</a></strong> it turned out that it offers a wide set of elements to operate with on the diagram.</div>
<div style="-webkit-transition: 0ms; background-color: white; border: 0px; color: #444444; font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 23px; margin-bottom: 1.5em; opacity: 1; outline: 0px; padding: 0px; transition: 0ms; vertical-align: baseline;">
Noteworthy among such elements are containers which allow aggregating diagram objects into thematic groups.</div>
<div>
<img src="http://www.pinaldave.com/bimg/dd-img2.png" /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<span style="background-color: white; color: #444444; font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 23px;">Moreover, you can even place an image directly on the diagram if the scheme design is based on a standard template.</span></div>
<div>
<span style="background-color: white; color: #444444; font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 23px;"><br /></span></div>
<div>
<img src="http://www.pinaldave.com/bimg/dd-img3.png" /></div>
<div>
<span style="background-color: white; color: #444444; font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 23px;"><br /></span></div>
<div>
<div style="-webkit-transition: 0ms; background-color: white; border: 0px; color: #444444; font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 23px; margin-bottom: 1.5em; opacity: 1; outline: 0px; padding: 0px; transition: 0ms; vertical-align: baseline;">
Each of the development environments has a different approach to storing a diagram (for example, SSMS stores them on a server-side, whereas dbForge Studio – in a local file).</div>
<div style="-webkit-transition: 0ms; background-color: white; border: 0px; color: #444444; font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 23px; margin-bottom: 1.5em; opacity: 1; outline: 0px; padding: 0px; transition: 0ms; vertical-align: baseline;">
I haven’t found yet an ability to convert existing diagrams from SSMS to <strong style="-webkit-transition: 0ms; border: 0px; font-family: inherit; font-style: inherit; margin: 0px; opacity: 1; outline: 0px; padding: 0px; transition: 0ms; vertical-align: baseline;"><a href="http://bit.ly/da-blog-1013" style="-webkit-transition: 0ms; border: 0px; color: #384f83; font-family: inherit; font-style: inherit; font-weight: inherit; margin: 0px; opacity: 1; outline: 0px; padding: 0px; text-decoration: none; transition: 0ms; vertical-align: baseline;" target="_blank">dbForge Studio</a></strong>. However I hope Devart developers will implement this feature in one of the following releases.</div>
<div style="-webkit-transition: 0ms; background-color: white; border: 0px; color: #444444; font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 23px; margin-bottom: 1.5em; opacity: 1; outline: 0px; padding: 0px; transition: 0ms; vertical-align: baseline;">
All in all, editing Database Diagrams through dbForge Studio was a nice experience and allowed speeding-up the common database designing tasks.</div>
<div style="-webkit-transition: 0ms; background-color: white; border: 0px; color: #444444; font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 23px; margin-bottom: 1.5em; opacity: 1; outline: 0px; padding: 0px; transition: 0ms; vertical-align: baseline;">
<strong style="-webkit-transition: 0ms; border: 0px; font-family: inherit; font-style: inherit; margin: 0px; opacity: 1; outline: 0px; padding: 0px; transition: 0ms; vertical-align: baseline;"><a href="http://bit.ly/dl-dbforge-1013" style="-webkit-transition: 0ms; border: 0px; color: #384f83; font-family: inherit; font-style: inherit; font-weight: inherit; margin: 0px; opacity: 1; outline: 0px; padding: 0px; text-decoration: none; transition: 0ms; vertical-align: baseline;" target="_blank">Download dbForge Studio now</a></strong>.</div>
<div style="-webkit-transition: 0ms; background-color: white; border: 0px; color: #444444; font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 23px; margin-bottom: 1.5em; opacity: 1; outline: 0px; padding: 0px; transition: 0ms; vertical-align: baseline;">
Reference: <strong style="-webkit-transition: 0ms; border: 0px; font-family: inherit; font-style: inherit; margin: 0px; opacity: 1; outline: 0px; padding: 0px; transition: 0ms; vertical-align: baseline;">Pinal Dave (<a href="http://blog.sqlauthority.com/" style="-webkit-transition: 0ms; border: 0px; color: #384f83; font-family: inherit; font-style: inherit; font-weight: inherit; margin: 0px; opacity: 1; outline: 0px; padding: 0px; text-decoration: none; transition: 0ms; vertical-align: baseline;" target="_blank">http://blog.sqlauthority.com</a>)</strong></div>
</div>
<div>
<span style="background-color: white; color: #444444; font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 23px;"><br /></span></div>
Anonymoushttp://www.blogger.com/profile/17445191350548842437noreply@blogger.comtag:blogger.com,1999:blog-1002597578696693985.post-79741912450225666322013-10-07T15:55:00.001-07:002013-10-07T15:55:27.133-07:00Combining JavaScript with Other Languages on the Web<a href="http://www.infoq.com/presentations/polyglot-javascript#.UlM7jcrbMRg.blogger">Combining JavaScript with Other Languages on the Web</a><br />
<br />
<strong style="background-color: white; border: 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 14px; line-height: 21px; margin: 0px; padding: 0px;">Summary</strong><br style="background-color: white; border: 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 14px; line-height: 21px; margin: 0px; padding: 0px;" /><span style="background-color: white; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 14px; line-height: 21px;">Alon Zakai discusses writing and deploying web applications that use both handwritten JavaScript and another language like C++ that has been compiled into JavaScript, presenting the advantages of that approach, open source tools like Emscripten and Embind that enable it, asm.js optimizations which let it run at near-native speeds, and several real-world examples of such projects.</span><br />
<span style="background-color: white; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 14px; line-height: 21px;"><br />
</span> <h3 id="biolabel" style="background-color: white; border: 0px; clear: both; color: #333333; float: none; font-family: Georgia, 'Times New Roman', Times, serif; font-size: 17px; line-height: 20px; margin: 0px 0px 10px; padding: 0px; width: 615px;">Bio</h3><div id="biotext" style="background-color: white; border: 0px; clear: both; color: #333333; float: left; font-family: Arial, Helvetica, sans-serif; font-size: 14px; line-height: 21px; margin-bottom: 15px; padding: 0px; width: 615px;">Alon Zakai is a researcher at Mozilla, working on techniques for compiling code to the web platform. In 2010 Alon founded the Emscripten open source project which utilizes LLVM to compile C and C++ to JavaScript, with the goal of allowing existing codebases to be automatically ported to standard web technologies.</div><div id="conference" style="background-color: white; border: 0px; clear: both; color: #333333; float: left; font-family: Arial, Helvetica, sans-serif; font-size: 14px; line-height: 21px; margin-bottom: 15px; padding: 0px; width: 615px;"><img alt="" border="0" src="http://www.infoq.com/resource/presentations/polyglot-javascript/en/promoimage/QConNY.jpg" style="border: 0px; float: left; margin: 0px 10px 10px 0px; max-width: 150px; padding: 0px;" />Software is Changing the World. QCon empowers software development by facilitating the spread of knowledge and innovation in the developer community. A practitioner-driven conference, QCon is designed for technical team leads, architects, engineering directors, and project managers who influence innovation in their teams.</div>Anonymoushttp://www.blogger.com/profile/17445191350548842437noreply@blogger.comtag:blogger.com,1999:blog-1002597578696693985.post-1186277670027440832013-02-16T10:36:00.000-08:002013-02-16T10:36:49.947-08:00Programming ASP.NET MVC 4<div class="titlepage" style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; color: #333333; font-family: Verdana, sans-serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 20px; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;">
<div style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<div style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<h2 class="title" style="color: #990000; font-family: serif; font-size: 1.25em; font-weight: bold; line-height: 1.25em; margin: 0.5em 0px;">
Appendix C. Best Practices</h2>
</div>
</div>
</div>
<div style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; color: #333333; font-family: Verdana, sans-serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; word-wrap: break-word;">
This book explains a multitude of topics in varying degrees of detail and offers a lot of advice. However, it is sometimes difficult to judge just how important any given piece of information is in the context of a long, technical description about it.</div>
<div style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; color: #333333; font-family: Verdana, sans-serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; word-wrap: break-word;">
This chapter calls out many of the common best practices noted throughout the book in a single list, making it easier to read through the list and validate very quickly whether you are following the popular patterns and practices set forth in this book.</div>
<div class="sect1" lang="en" style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; color: #333333; font-family: Verdana, sans-serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 20px; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;">
<div class="titlepage" style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<div style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<div style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<h2 class="title" id="_use_the_nuget_package_manager_to_manage_dependencies" style="color: #990000; font-family: serif; font-size: 1.25em; font-weight: bold; line-height: 1.25em; margin: 0.5em 0px;">
Use the NuGet Package Manager to Manage Dependencies</h2>
</div>
</div>
</div>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
The NuGet package manager is a great boon to developers and teams alike. Instead of spending your time getting up and running and checking to see if the projects that your application depends on have released new versions, let NuGet handle all of that for you!</div>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
If your organization has several teams that share common libraries, consider creating custom NuGet packages for those shared libraries and hosting a custom NuGet repository to provide more effective distribution and versioning.</div>
</div>
<div class="sect1" lang="en" style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; color: #333333; font-family: Verdana, sans-serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 20px; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;">
<div class="titlepage" style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<div style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<div style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<h2 class="title" id="_depend_on_abstractions" style="color: #990000; font-family: serif; font-size: 1.25em; font-weight: bold; line-height: 1.25em; margin: 0.5em 0px;">
Depend On Abstractions</h2>
</div>
</div>
</div>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
Abstractions encourage loosely-coupled systems with a healthy separation of contracts and implementations. Abstractions are easily interchanged which not only provides easier maintenance, but is also crucial to unit testing.</div>
</div>
<div class="sect1" lang="en" style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; color: #333333; font-family: Verdana, sans-serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 20px; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;">
<div class="titlepage" style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<div style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<div style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<h2 class="title" id="_avoid_the_new_keyword" style="color: #990000; font-family: serif; font-size: 1.25em; font-weight: bold; line-height: 1.25em; margin: 0.5em 0px;">
Avoid The New Keyword</h2>
</div>
</div>
</div>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
Any time you employ the new keyword to create a new instance of a concrete type you are — by definition — not depending on an abstraction. Though this is often not a problem at all (e.g.<span class="Apple-converted-space"> </span><code class="literal" style="font-family: monospace;">new StringBuilder()</code>,<span class="Apple-converted-space"> </span><code class="literal" style="font-family: monospace;">new List<string>()</string></code>, etc.), take a moment any time you use the new keyword to consider if the object you are creating might be better expressed as a dependency to be injected. Let another component create it!</div>
</div>
<div class="sect1" lang="en" style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; color: #333333; font-family: Verdana, sans-serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 20px; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;">
<div class="titlepage" style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<div style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<div style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<h2 class="title" id="_avoid_referring_to_literal_httpcontext_literal_directly_use_literal_httpcontextbase_literal" style="color: #990000; font-family: serif; font-size: 1.25em; font-weight: bold; line-height: 1.25em; margin: 0.5em 0px;">
Avoid Referring To<span class="Apple-converted-space"> </span><code class="literal" style="font-family: monospace;">HttpContext</code><span class="Apple-converted-space"> </span>Directly (use<span class="Apple-converted-space"> </span><code class="literal" style="font-family: monospace;">HttpContextBase</code>)</h2>
</div>
</div>
</div>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
ASP.NET MVC (and later, .NET 4) introduced<span class="Apple-converted-space"> </span><code class="literal" style="font-family: monospace;">System.Web.Abstractions</code>, a set of abstractions over many of the core parts of the ASP.NET Framework. The "depend on abstractions" advice extends to these classes as well. In particular, one of the most often referenced objects in ASP.NET development is<span class="Apple-converted-space"> </span><code class="literal" style="font-family: monospace;">HttpContext</code> — prefer using the<span class="Apple-converted-space"> </span><code class="literal" style="font-family: monospace;">HttpContextBase</code><span class="Apple-converted-space"> </span>abstraction instead.</div>
</div>
<div class="sect1" lang="en" style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; color: #333333; font-family: Verdana, sans-serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 20px; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;">
<div class="titlepage" style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<div style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<div style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<h2 class="title" id="_avoid_magic_strings" style="color: #990000; font-family: serif; font-size: 1.25em; font-weight: bold; line-height: 1.25em; margin: 0.5em 0px;">
Avoid "Magic Strings"</h2>
</div>
</div>
</div>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
"Magic strings" — crucial, yet arbitrary string values — may be convenient and in many situations even required, however they have many issues. Some of the biggest issues with magic strings are that they:</div>
<pre class="literallayout" style="background-color: #f2f2f2; background-position: initial initial; background-repeat: initial initial; border: 1px solid rgb(221, 221, 221); font-family: monospace; margin: 1em 0px; padding: 1em; white-space: pre-wrap; word-wrap: break-word;">1) don't have any intrinsic meaning (e.g. it's difficult to tell how or if one "ID" relates to another "ID")
2) are easily broken with misspelling or case sensitivity
3) don't react well to refactoring
4) promote rampant, pervasive duplication</pre>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
Here are two examples, the first using magic strings to access data in a ViewData dictionary, and the second refactored example with that same data in a strongly-typed model:</div>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
<b>Using magic strings. </b></div>
<pre class="programlisting" style="background-color: #f2f2f2; background-position: initial initial; background-repeat: initial initial; border: 1px solid rgb(221, 221, 221); font-family: monospace; margin: 1em 0px; padding: 1em; white-space: pre-wrap; word-wrap: break-word;">
<label for="FirstName">First Name:</label>
<span id="FirstName">@ViewData["FirstName"]</span>
</pre>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
<b>Using a strongly-typed model. </b></div>
<pre class="programlisting" style="background-color: #f2f2f2; background-position: initial initial; background-repeat: initial initial; border: 1px solid rgb(221, 221, 221); font-family: monospace; margin: 1em 0px; padding: 1em; white-space: pre-wrap; word-wrap: break-word;">
<label for="FirstName">First Name:</label>
<span id="FirstName">@Model.FirstName</span>
</pre>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
Magic strings carry the allure of being very simple to use when you introduce them, but that ease of use often comes back to bite you later when it comes time to maintain them.</div>
</div>
<div class="sect1" lang="en" style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; color: #333333; font-family: Verdana, sans-serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 20px; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;">
<div class="titlepage" style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<div style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<div style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<h2 class="title" id="_prefer_models_over_viewdata" style="color: #990000; font-family: serif; font-size: 1.25em; font-weight: bold; line-height: 1.25em; margin: 0.5em 0px;">
Prefer models Over ViewData</h2>
</div>
</div>
</div>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
As the preceding example shows, the<span class="Apple-converted-space"> </span><code class="literal" style="font-family: monospace;">ViewData</code><span class="Apple-converted-space"> </span>dictionary is one of the most tempting places to leverage magic strings in an ASP.NET MVC application. However, strongly-typed Presentation Models can be a handy tool to avoid assigning and retrieving data directly to and from the<span class="Apple-converted-space"> </span><code class="literal" style="font-family: monospace;">ViewData</code><span class="Apple-converted-space"> </span>dictionary.</div>
</div>
<div class="sect1" lang="en" style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; color: #333333; font-family: Verdana, sans-serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 20px; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;">
<div class="titlepage" style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<div style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<div style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<h2 class="title" id="_do_not_write_html_in_back_end_code" style="color: #990000; font-family: serif; font-size: 1.25em; font-weight: bold; line-height: 1.25em; margin: 0.5em 0px;">
Do Not Write HTML In "back-end" Code</h2>
</div>
</div>
</div>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
Follow the practice of separation of concerns: it is not the responsibility of controllers and other "back-end code" to render HTML. The exceptions here, of course, are UI helper methods and classes whose only job is to help the views render code. These classes should be considered part of the view, not "back-end" classes.</div>
</div>
<div class="sect1" lang="en" style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; color: #333333; font-family: Verdana, sans-serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 20px; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;">
<div class="titlepage" style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<div style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<div style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<h2 class="title" id="_do_not_perform_business_logic_in_views" style="color: #990000; font-family: serif; font-size: 1.25em; font-weight: bold; line-height: 1.25em; margin: 0.5em 0px;">
Do Not Perform Business Logic In Views</h2>
</div>
</div>
</div>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
The inverse of the previous practice is true as well: views should not contain any business logic. In fact, views should contain as little logic as possible! Views should concentrate on how to display data that they have been provided, not take action on that data.</div>
</div>
<div class="sect1" lang="en" style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; color: #333333; font-family: Verdana, sans-serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 20px; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;">
<div class="titlepage" style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<div style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<div style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<h2 class="title" id="_consolidate_commonly_used_view_snippets_with_helper_methods" style="color: #990000; font-family: serif; font-size: 1.25em; font-weight: bold; line-height: 1.25em; margin: 0.5em 0px;">
Consolidate Commonly-used View Snippets With Helper Methods</h2>
</div>
</div>
</div>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
The notion of "user controls," "server controls," and simply "controls" in general is very widespread… and for good reason. These concepts help consolidate commonly-used code and logic in a central location to make it easier to reuse and maintain. ASP.NET MVC is not control-driven, however — instead, it relies on the "helper method" paradigm in which methods do the work that controls once did. This can pertain to an entire section of HTML (what we’re used to calling a "control"), or even as simple as strongly-typed access to a commonly-referred URL. For example, you may notice many of the same references to the "Membership Page" (~/membership) like so:</div>
<pre class="literallayout" style="background-color: #f2f2f2; background-position: initial initial; background-repeat: initial initial; border: 1px solid rgb(221, 221, 221); font-family: monospace; margin: 1em 0px; padding: 1em; white-space: pre-wrap; word-wrap: break-word;">@Html.ActionLink("Membership", "Index", "Membership", [...])</pre>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
You can instead consolidate this call (and eliminate the magic strings!) by turning it into a helper method:</div>
<pre class="literallayout" style="background-color: #f2f2f2; background-position: initial initial; background-repeat: initial initial; border: 1px solid rgb(221, 221, 221); font-family: monospace; margin: 1em 0px; padding: 1em; white-space: pre-wrap; word-wrap: break-word;">@Html.MembershipLink()</pre>
</div>
<div class="sect1" lang="en" style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; color: #333333; font-family: Verdana, sans-serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 20px; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;">
<div class="titlepage" style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<div style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<div style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<h2 class="title" id="_prefer_presentation_models_over_direct_usage_of_business_objects" style="color: #990000; font-family: serif; font-size: 1.25em; font-weight: bold; line-height: 1.25em; margin: 0.5em 0px;">
Prefer Presentation Models Over Direct Usage Of Business Objects</h2>
</div>
</div>
</div>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
In general, try to avoid allowing changes to the business model to directly affect the view. Presentation Models help with this.</div>
</div>
<div class="sect1" lang="en" style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; color: #333333; font-family: Verdana, sans-serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 20px; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;">
<div class="titlepage" style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<div style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<div style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<h2 class="title" id="_encapsulate_if_statements_with_html_helpers_in_views" style="color: #990000; font-family: serif; font-size: 1.25em; font-weight: bold; line-height: 1.25em; margin: 0.5em 0px;">
Encapsulate "if" Statements With HTML Helpers in Views</h2>
</div>
</div>
</div>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
Integrating code and markup is quite powerful; however, it can get quite messy. Consider the following (relatively simple) if-else statement:</div>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
<b>Index.cshtml. </b></div>
<pre class="programlisting" style="background-color: #f2f2f2; background-position: initial initial; background-repeat: initial initial; border: 1px solid rgb(221, 221, 221); font-family: monospace; margin: 1em 0px; padding: 1em; white-space: pre-wrap; word-wrap: break-word;">@if(Model.IsAnonymousUser) {
<img anonymous.jpg="" content="" images="" src="@Url.Content(" />
} else if(Model.IsAdministrator) {
<img administrator.jpg="" content="" images="" src="@Url.Content(" />
} else if(Model.Membership == Membership.Standard) {
<img content="" images="" member.jpg="" src="@Url.Content(" />
} else if(Model.Membership == Membership.Preferred) {
<img content="" images="" preferred_member.jpg="" src="@Url.Content(" />
}</pre>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
That’s quite obscure code for rendering out essentially the same markup with the exception of one part (the URL). Consider this approach instead:</div>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
<b>UserHtmlHelperExtensions.cs. </b></div>
<pre class="programlisting" style="background-color: #f2f2f2; background-position: initial initial; background-repeat: initial initial; border: 1px solid rgb(221, 221, 221); font-family: monospace; margin: 1em 0px; padding: 1em; white-space: pre-wrap; word-wrap: break-word;">public static string UserAvatar(this HtmlHelper<user> helper)
{
var user = helper.ViewData.Model;
string avatarFilename = "anonymous.jpg";
if (user.IsAnonymousUser)
{
avatarFilename = "anonymous.jpg";
}
else if (user.IsAdministrator)
{
avatarFilename = "administrator.jpg";
}
else if (user.Membership == Membership.Standard)
{
avatarFilename = "member.jpg";
}
else if (user.Membership == Membership.Preferred)
{
avatarFilename = "preferred_member.jpg";
}
var urlHelper = new UrlHelper(helper.ViewContext.RequestContext);
var contentPath = string.Format("~/content/images/{0}", avatarFilename);
string imageUrl = urlHelper.Content(contentPath);
return string.Format("<img src="{0}" />", imageUrl);
}</user></pre>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
<b>Index.cshtml (and everywhere else you need the user’s avatar). </b></div>
<pre class="programlisting" style="background-color: #f2f2f2; background-position: initial initial; background-repeat: initial initial; border: 1px solid rgb(221, 221, 221); font-family: monospace; margin: 1em 0px; padding: 1em; white-space: pre-wrap; word-wrap: break-word;"> @Html.UserAvatar()</pre>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
Not only is this cleaner, it’s also more declarative and moves this logic into a central location so that it may be more easily maintained. For instance, if the requirements change and the site needs to support custom avatars, the Html.UserAvatar helper method can be modified in one place.</div>
</div>
<div class="sect1" lang="en" style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; color: #333333; font-family: Verdana, sans-serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 20px; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;">
<div class="titlepage" style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<div style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<div style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<h2 class="title" id="_prefer_explicit_view_names" style="color: #990000; font-family: serif; font-size: 1.25em; font-weight: bold; line-height: 1.25em; margin: 0.5em 0px;">
Prefer Explicit View Names</h2>
</div>
</div>
</div>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
A majority of the ASP.NET MVC controller action code samples call the View() method without specifying a view name. This is suitable for simple demo code, however when tests or other action methods begin calling each other, the detriments to this approach become clear. When no view name is specified, the ASP.NET MVC Framework defaults to the name of the action that was originally called. Thus, calling the Index action in the following example will attempt to locate a view named "Index.cshtml" — a view that probably doesn’t exist (but "List.cshtml" certainly does!):</div>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
<b>EmployeeController.cs. </b></div>
<pre class="programlisting" style="background-color: #f2f2f2; background-position: initial initial; background-repeat: initial initial; border: 1px solid rgb(221, 221, 221); font-family: monospace; margin: 1em 0px; padding: 1em; white-space: pre-wrap; word-wrap: break-word;">public ActionResult Index()
{
return List();
}
public ActionResult List()
{
var employees = Employee.GetAll();
return View(employees);
}</pre>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
If the<span class="Apple-converted-space"> </span><code class="literal" style="font-family: monospace;">List</code><span class="Apple-converted-space"> </span>action is modified to call the<span class="Apple-converted-space"> </span><code class="literal" style="font-family: monospace;">View()</code><span class="Apple-converted-space"> </span>method with a specific view name (as shown below), everything works fine.</div>
<pre class="programlisting" style="background-color: #f2f2f2; background-position: initial initial; background-repeat: initial initial; border: 1px solid rgb(221, 221, 221); font-family: monospace; margin: 1em 0px; padding: 1em; white-space: pre-wrap; word-wrap: break-word;">public ActionResult List( )
{
var employees = Employee.GetAll();
return View("List", employees);
}</pre>
</div>
<div class="sect1" lang="en" style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; color: #333333; font-family: Verdana, sans-serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 20px; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;">
<div class="titlepage" style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<div style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<div style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<h2 class="title" id="_prefer_parameter_objects_over_long_lists_of_parameters" style="color: #990000; font-family: serif; font-size: 1.25em; font-weight: bold; line-height: 1.25em; margin: 0.5em 0px;">
Prefer Parameter Objects Over Long Lists Of Parameters</h2>
</div>
</div>
</div>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
This advice is not specific to ASP.NET MVC - long parameter lists are commonly considered a "code smell" and should be avoided whenever possible. Additionally, ASP.NET MVC’s powerful Model Binders make following this advice incredibly easy. Consider the two contrasting snippets:</div>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
<b>Long Parameter List. </b></div>
<pre class="programlisting" style="background-color: #f2f2f2; background-position: initial initial; background-repeat: initial initial; border: 1px solid rgb(221, 221, 221); font-family: monospace; margin: 1em 0px; padding: 1em; white-space: pre-wrap; word-wrap: break-word;">public ActionResult Create(
string firstName, string lastName, DateTime? birthday,
string addressLine1, string addressLine2,
string city, string region, string regionCode, string country
[... and many, many more]
)
{
var employee = new Employee( [Long list of parameters...] )
employee.Save();
return View("Details", employee);
}</pre>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
<b>Parameter Object. </b></div>
<pre class="programlisting" style="background-color: #f2f2f2; background-position: initial initial; background-repeat: initial initial; border: 1px solid rgb(221, 221, 221); font-family: monospace; margin: 1em 0px; padding: 1em; white-space: pre-wrap; word-wrap: break-word;">public ActionResult Create(Employee employee)
{
employee.Save();
return View("Details", employee);
}</pre>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
The Parameter Object example is much more straight-forward, and leverages the ASP.NET MVC Framework’s powerful Model Binders and model validation to make this code much safer and easier to maintain.</div>
</div>
<div class="sect1" lang="en" style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; color: #333333; font-family: Verdana, sans-serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 20px; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;">
<div class="titlepage" style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<div style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<div style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<h2 class="title" id="_encapsulate_shared_common_functionality_logic_and_data_with_action_filters_or_child_actions_html_renderaction" style="color: #990000; font-family: serif; font-size: 1.25em; font-weight: bold; line-height: 1.25em; margin: 0.5em 0px;">
Encapsulate Shared/Common Functionality, Logic, And Data With Action Filters Or Child Actions (Html.RenderAction)</h2>
</div>
</div>
</div>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
Every website of any significant complexity will have common elements across multiple (or perhaps all) pages in the application. A global website navigation menu — the kind that appears on every single page in the site - is a canonical example of this type of globally-applied logic and content. The data for these common elements needs to come from somewhere, yet explicitly retrieving the data in every controller action would create a maintenance nightmare. Action Filters and/or child actions (via the Html.RenderAction method) provide a central location to hold this kind of logic.</div>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
Consider the following layout snippet (cut from the larger layout page) which renders navigation items in a list:</div>
<pre class="programlisting" style="background-color: #f2f2f2; background-position: initial initial; background-repeat: initial initial; border: 1px solid rgb(221, 221, 221); font-family: monospace; margin: 1em 0px; padding: 1em; white-space: pre-wrap; word-wrap: break-word;"><ul id="global-menu">
@foreach (var menuItem in ViewData.SingleOrDefault<navigationmenu>()) {
<li :="" class="@(menuItem.IsSelected ? " null="" selected="">
@Html.RouteLink(menuItem.DisplayName, menuItem.RouteData)
</li>
}
</navigationmenu></ul>
</pre>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
The NavigationMenu ViewData object needs to come from somewhere. Since they can be configured to execute prior to every controller request, Action Filters make an excellent candidate to populate View Data with globally-required data like this. Here is the Action Filter that populates the NavigationMenu data required in the previous example:</div>
<pre class="programlisting" style="background-color: #f2f2f2; background-position: initial initial; background-repeat: initial initial; border: 1px solid rgb(221, 221, 221); font-family: monospace; margin: 1em 0px; padding: 1em; white-space: pre-wrap; word-wrap: break-word;">public class NavigationMenuPopulationFilter : ActionFilterAttribute
{
private readonly INavigationDataSource _dataSource;
public NavigationMenuPopulationFilter(INavigationDataSource dataSource)
{
_dataSource = dataSource;
}
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
NavigationMenu mainMenu = _dataSource.GetNavigationMenu("main-menu");
filterContext.Controller.ViewData["MainNavigationMenu"] = mainMenu;
}
}</pre>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
This Filter is pretty straight-forward — it gets the correct navigation menu data model from some data source and adds it to the View Data collection prior to executing the requested action. From this point on, any component that requires it can retrieve the navigation menu from View Data.</div>
</div>
<div class="sect1" lang="en" style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; color: #333333; font-family: Verdana, sans-serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 20px; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;">
<div class="titlepage" style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<div style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<div style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<h2 class="title" id="_prefer_grouping_actions_into_controllers_based_on_how_they_relate_to_business_concepts" style="color: #990000; font-family: serif; font-size: 1.25em; font-weight: bold; line-height: 1.25em; margin: 0.5em 0px;">
Prefer grouping Actions into Controllers based on how they relate to business concepts</h2>
</div>
</div>
</div>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
For example, consider creating a<span class="Apple-converted-space"> </span><code class="literal" style="font-family: monospace;">CustomersController</code><span class="Apple-converted-space"> </span>to hold the actions related to dealing with Customers.</div>
</div>
<div class="sect1" lang="en" style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; color: #333333; font-family: Verdana, sans-serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 20px; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;">
<div class="titlepage" style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<div style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<div style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<h2 class="title" id="_avoid_grouping_actions_into_controllers_based_on_technical_relation" style="color: #990000; font-family: serif; font-size: 1.25em; font-weight: bold; line-height: 1.25em; margin: 0.5em 0px;">
Avoid grouping Actions into Controllers based on technical relation</h2>
</div>
</div>
</div>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
For example, avoid creating the<span class="Apple-converted-space"> </span><code class="literal" style="font-family: monospace;">AjaxController</code><span class="Apple-converted-space"> </span>to contain all of the AJAX Actions that your site exposes. Instead, group these actions together with their related concepts. For example, the AJAX actions that provide Customer data or partial views should be in the<span class="Apple-converted-space"> </span><code class="literal" style="font-family: monospace;">CustomersController</code><span class="Apple-converted-space"> </span>with all of the other customer-related actions.</div>
</div>
<div class="sect1" lang="en" style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; color: #333333; font-family: Verdana, sans-serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 20px; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;">
<div class="titlepage" style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<div style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<div style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<h2 class="title" id="_prefer_placing_action_filters_at_the_highest_appropriate_level" style="color: #990000; font-family: serif; font-size: 1.25em; font-weight: bold; line-height: 1.25em; margin: 0.5em 0px;">
Prefer Placing Action Filters At The "highest appropriate level"</h2>
</div>
</div>
</div>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
Most Action Filter attributes can be applied at either the method (Action) or class (Controller) level. When an attribute applies to all actions in a controller, prefer placing that attribute on the controller itself rather than on each individual class. Also consider whether or not the attribute may be appropriate further up the controller’s dependency chain (i.e., on one of its base classes) instead.</div>
</div>
<div class="sect1" lang="en" style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; color: #333333; font-family: Verdana, sans-serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 20px; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;">
<div class="titlepage" style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<div style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<div style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<h2 class="title" id="_prefer_multiple_views_and_or_partial_views_over_complex_if_then_else_logic_that_shows_and_hides_sections" style="color: #990000; font-family: serif; font-size: 1.25em; font-weight: bold; line-height: 1.25em; margin: 0.5em 0px;">
Prefer multiple views (and/or Partial views) Over Complex If-Then-Else Logic That Shows And Hides Sections</h2>
</div>
</div>
</div>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
The Page Controller pattern of Web Forms encourages posting back to the same page, possibly showing or hiding certain sections of the page depending on the request. Due to ASP.NET MVC’s separation of concerns, this can often be avoided by creating separate views for each of these situations, lowering or eliminating entirely the need for complex view logic. Consider the following example:</div>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
<b>Wizard.cshtml. </b></div>
<pre class="programlisting" style="background-color: #f2f2f2; background-position: initial initial; background-repeat: initial initial; border: 1px solid rgb(221, 221, 221); font-family: monospace; margin: 1em 0px; padding: 1em; white-space: pre-wrap; word-wrap: break-word;">@if(Model.WizardStep == WizardStep.First) {
<!-- The first step of the wizard -->
} else if(Model.WizardStep == WizardStep.Second) {
<!-- The second step of the wizard -->
} else if(Model.WizardStep == WizardStep.Third) {
<!-- The third step of the wizard -->
}</pre>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
Here the view is deciding which step of the Wizard to display, which is dangerously close to business logic! Let’s move this logic to the Controller where it belongs and split this view into multiple views:</div>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
<b>WizardController.cs. </b></div>
<pre class="programlisting" style="background-color: #f2f2f2; background-position: initial initial; background-repeat: initial initial; border: 1px solid rgb(221, 221, 221); font-family: monospace; margin: 1em 0px; padding: 1em; white-space: pre-wrap; word-wrap: break-word;">public ActionResult Step(WizardStep currentStep)
{
// This is simple logic, but could be MUCH more complex!
string view = currentStep.ToString();
return View(view);
}</pre>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
<b>First.cshtml. </b></div>
<pre class="programlisting" style="background-color: #f2f2f2; background-position: initial initial; background-repeat: initial initial; border: 1px solid rgb(221, 221, 221); font-family: monospace; margin: 1em 0px; padding: 1em; white-space: pre-wrap; word-wrap: break-word;"><!-- The first step of the wizard --></pre>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
<b>Second.cshtml. </b></div>
<pre class="programlisting" style="background-color: #f2f2f2; background-position: initial initial; background-repeat: initial initial; border: 1px solid rgb(221, 221, 221); font-family: monospace; margin: 1em 0px; padding: 1em; white-space: pre-wrap; word-wrap: break-word;"><!-- The second step of the wizard --></pre>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
<b>Third.cshtml. </b></div>
<pre class="programlisting" style="background-color: #f2f2f2; background-position: initial initial; background-repeat: initial initial; border: 1px solid rgb(221, 221, 221); font-family: monospace; margin: 1em 0px; padding: 1em; white-space: pre-wrap; word-wrap: break-word;"><!-- The third step of the wizard --></pre>
</div>
<div class="sect1" lang="en" style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; color: #333333; font-family: Verdana, sans-serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 20px; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;">
<div class="titlepage" style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<div style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<div style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<h2 class="title" id="_prefer_the_post_redirect_get_pattern_when_posting_form_data" style="color: #990000; font-family: serif; font-size: 1.25em; font-weight: bold; line-height: 1.25em; margin: 0.5em 0px;">
Prefer The Post-Redirect-Get Pattern When Posting Form Data</h2>
</div>
</div>
</div>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
The Post/Redirect/Get (PRG) pattern is a common design pattern for web developers to help avoid certain duplicate form submissions and allow user agents to behave more intuitively with bookmarks and the refresh button. Due to the Page Controller nature of Web Forms in which developers are usually required to post back to the same page for all actions in a particular context (e.g. display employee data so that it may be edited and re-submitted), the PRG pattern is not used as much in Web Forms environments. Because ASP.NET MVC separates actions into separate URLs it is easy to run into trouble with update scenarios. For instance,</div>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
<b>EmployeeController.cs. </b></div>
<pre class="programlisting" style="background-color: #f2f2f2; background-position: initial initial; background-repeat: initial initial; border: 1px solid rgb(221, 221, 221); font-family: monospace; margin: 1em 0px; padding: 1em; white-space: pre-wrap; word-wrap: break-word;">public class EmployeeController : Controller
{
public ActionResult Edit(int id)
{
var employee = Employee.Get(id);
return View("Edit ", employee);
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Update(int id)
{
var employee = Employee.Get(id);
UpdateModel(employee);
return View("Edit", id);
}
}</pre>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
In this example when a user posts to the Update action, though the user will be looking at the "Edit" view as desired, the resulting URL in their browser will be "/employees/update/1". If the user refreshes the page or bookmarks a link to that URL, etc. subsequent visits would update the employee information again or even not work at all. What we really want to happen in the Update action is to update the Employee information and then redirect the user back to the Edit page so that they are back to the original "Edit" location. In this scenario, the PRG pattern may be applied thusly:</div>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
<b>EmployeeController.cs (partial, showing only the changed Update action). </b></div>
<pre class="programlisting" style="background-color: #f2f2f2; background-position: initial initial; background-repeat: initial initial; border: 1px solid rgb(221, 221, 221); font-family: monospace; margin: 1em 0px; padding: 1em; white-space: pre-wrap; word-wrap: break-word;">[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Update(int id)
{
var employee = Employee.Get(id);
UpdateModel(employee);
return RedirectToAction("Edit", new { id });
}</pre>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
Though it’s a subtle change, switching from the View() method to the RedirectToAction() method will produce a client-side redirect (as opposed to a "server-side redirect" in the original example) after the Update method has finished updating the employee, landing the user on the proper URL: "/employees/edit/1".</div>
</div>
<div class="sect1" lang="en" style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; color: #333333; font-family: Verdana, sans-serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 20px; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;">
<div class="titlepage" style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<div style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<div style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<h2 class="title" id="_prefer_startup_tasks_over_logic_placed_in_application_start_global_asax" style="color: #990000; font-family: serif; font-size: 1.25em; font-weight: bold; line-height: 1.25em; margin: 0.5em 0px;">
Prefer Startup Tasks Over Logic Placed In Application_Start (global.asax)</h2>
</div>
</div>
</div>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
Most ASP.NET MVC demos will advise modifying the Application_Start method in the Global.asax file in order to introduce logic that will execute when the application starts. While this is certainly the easiest and most straight-forward approach, the WebActivator framework provides the concept of startup tasks. These tasks are easy to implement and are automatically discovered and executed during the application startup. These tasks help provide cleaner code and encourage proper adherence of the Single Responsibility principle.</div>
</div>
<div class="sect1" lang="en" style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; color: #333333; font-family: Verdana, sans-serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 20px; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;">
<div class="titlepage" style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<div style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<div style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<h2 class="title" id="_prefer_authorize_attribute_over_imperative_security_checks" style="color: #990000; font-family: serif; font-size: 1.25em; font-weight: bold; line-height: 1.25em; margin: 0.5em 0px;">
Prefer Authorize Attribute Over Imperative Security Checks</h2>
</div>
</div>
</div>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
Traditionally, authorization control resembles the following:</div>
<pre class="programlisting" style="background-color: #f2f2f2; background-position: initial initial; background-repeat: initial initial; border: 1px solid rgb(221, 221, 221); font-family: monospace; margin: 1em 0px; padding: 1em; white-space: pre-wrap; word-wrap: break-word;">public ActionResult Details(int id)
{
if (!User.IsInRole("EmployeeViewer"))
return new HttpUnauthorizedResult();
// Action logic
}</pre>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
This is a very imperative approach, and makes it difficult to implement application-wide changes. The ASP.NET MVC<span class="Apple-converted-space"> </span><code class="literal" style="font-family: monospace;">AuthorizeAttribute</code><span class="Apple-converted-space"> </span>provides a simple and declarative way to authorize access to actions. This same code may be rewritten as:</div>
<pre class="programlisting" style="background-color: #f2f2f2; background-position: initial initial; background-repeat: initial initial; border: 1px solid rgb(221, 221, 221); font-family: monospace; margin: 1em 0px; padding: 1em; white-space: pre-wrap; word-wrap: break-word;">[Authorize(Roles = "EmployeeViewer")]
public ActionResult Details(int id)
{
// Action logic
}</pre>
</div>
<div class="sect1" lang="en" style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; color: #333333; font-family: Verdana, sans-serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 20px; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;">
<div class="titlepage" style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<div style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<div style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<h2 class="title" id="_prefer_using_the_route_attribute_over_more_generic_global_routes" style="color: #990000; font-family: serif; font-size: 1.25em; font-weight: bold; line-height: 1.25em; margin: 0.5em 0px;">
Prefer Using The Route Attribute Over More Generic Global Routes</h2>
</div>
</div>
</div>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
Of course, the most specific route is one that maps directly to one action and one action only.</div>
</div>
<div class="sect1" lang="en" style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; color: #333333; font-family: Verdana, sans-serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 20px; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;">
<div class="titlepage" style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<div style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<div style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<h2 class="title" id="_consider_using_an_anti_forgery_token_to_avoid_csrf_attacks" style="color: #990000; font-family: serif; font-size: 1.25em; font-weight: bold; line-height: 1.25em; margin: 0.5em 0px;">
Consider Using An Anti-Forgery Token To Avoid CSRF Attacks</h2>
</div>
</div>
</div>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
For form posts where security is a concern, ASP.NET MVC provides measures to help deter certain kinds of common attacks. One of these measures is the Anti-forgery Token. The Token has both server- and client-side components.</div>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
<b>Client Side: Call the<span class="Apple-converted-space"> </span><code class="literal" style="font-family: monospace;">Html.AntiForgeryToken</code><span class="Apple-converted-space"> </span>helper method inside your form. </b></div>
<pre class="programlisting" style="background-color: #f2f2f2; background-position: initial initial; background-repeat: initial initial; border: 1px solid rgb(221, 221, 221); font-family: monospace; margin: 1em 0px; padding: 1em; white-space: pre-wrap; word-wrap: break-word;">@using(Html.Form("Update", "Employee")) {
@Html.AntiForgeryToken()
<!-- rest of form goes here -->
}</pre>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
<b>Server Side: Apply the<span class="Apple-converted-space"> </span><code class="literal" style="font-family: monospace;">ValidateAntiForgeryTokenAttribute</code><span class="Apple-converted-space"> </span>to the form post action. </b></div>
<pre class="programlisting" style="background-color: #f2f2f2; background-position: initial initial; background-repeat: initial initial; border: 1px solid rgb(221, 221, 221); font-family: monospace; margin: 1em 0px; padding: 1em; white-space: pre-wrap; word-wrap: break-word;">[ValidateAntiForgeryToken]
[AcceptVerbs(HttpVerbs.Post | HttpVerbs.Put)]
public ActionResult Update(int id)
{
// Process validated form post
}</pre>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
This code will insert a user-specific token in a hidden field on your form and validate that token on the server side prior to executing any further processing of the data being posted.</div>
</div>
<div class="sect1" lang="en" style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; color: #333333; font-family: Verdana, sans-serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 20px; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;">
<div class="titlepage" style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<div style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<div style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<h2 class="title" id="_consider_the_literal_acceptverbs_literal_attribute_to_restrict_how_actions_may_be_called" style="color: #990000; font-family: serif; font-size: 1.25em; font-weight: bold; line-height: 1.25em; margin: 0.5em 0px;">
Consider the<span class="Apple-converted-space"> </span><code class="literal" style="font-family: monospace;">AcceptVerbs</code><span class="Apple-converted-space"> </span>Attribute To Restrict How Actions May Be Called</h2>
</div>
</div>
</div>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
Many Actions rest on a number of assumptions about how and when they will be called in the context of an application. For instance, one assumption might be that an Employee.Update action will be called from some kind of Employee Edit page containing a form with the Employee properties to post to the Employee.Update action in order to update an Employee record. If this action is called in an unexpected way (e.g. via a GET request with no form posts), the action will probably not work, and in fact may produce unforeseen problems.</div>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
The ASP.NET MVC framework offers the AcceptVerbs attribute to help restrict action calls to specific Http Methods. Thus, the answer to the aforementioned Employee.Update scenario would be:</div>
<pre class="programlisting" style="background-color: #f2f2f2; background-position: initial initial; background-repeat: initial initial; border: 1px solid rgb(221, 221, 221); font-family: monospace; margin: 1em 0px; padding: 1em; white-space: pre-wrap; word-wrap: break-word;">[AcceptVerbs(HttpVerbs.Post | HttpVerbs.Put)]
public ActionResult Update(int id)</pre>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
Applying the AcceptVerbs attribute in this way will restrict requests to this action only to those made specifying the POST or PUT HTTP Methods. All others (e.g. GET requests) will be ignored.</div>
</div>
<div class="sect1" lang="en" style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; color: #333333; font-family: Verdana, sans-serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 20px; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;">
<div class="titlepage" style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<div style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<div style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<h2 class="title" id="_consider_output_caching" style="color: #990000; font-family: serif; font-size: 1.25em; font-weight: bold; line-height: 1.25em; margin: 0.5em 0px;">
Consider Output Caching</h2>
</div>
</div>
</div>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
Output caching is one of the easiest ways to get additional performance from a web application. Caching requests in which little or no content has changed since the previous request is a quick way to speed up your request times. The ASP.NET MVC framework offers the OutputCacheAttribute to accomplish this task. This attribute mirrors the Web Forms output caching functionality and accepts many of the same properties.</div>
</div>
<div class="sect1" lang="en" style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; color: #333333; font-family: Verdana, sans-serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 20px; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;">
<div class="titlepage" style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<div style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<div style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<h2 class="title" id="_consider_removing_unused_view_engines" style="color: #990000; font-family: serif; font-size: 1.25em; font-weight: bold; line-height: 1.25em; margin: 0.5em 0px;">
Consider Removing Unused View Engines</h2>
</div>
</div>
</div>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
ASP.NET MVC registers both the Web Forms and Razor View by default, which means that the View Locator will try to search the view locations for both Web Forms and Razor views. This makes it possible to use either (or both!) types of views in your application.</div>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
However, for consistency’s sake most teams choose one type of view and use that type exclusively throughout their application, making it a bit wasteful for the ASP.NET MVC View Locator to look for views of the type that aren’t being used. For example, if you choose to only use Razor views in your application, the View Locator will continue to search for Web Forms views even though you know that it will never find one.</div>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
Luckily, you can avoid this unnecessary overhead and slightly optimize your application by unregistering the view engine that you are not using.</div>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
<a class="xref" href="http://ofps.oreilly.com/titles/9781449320317/_best_practices.html#RemovingViewEngine" style="color: #87388c; text-decoration: initial;" title="Removing the Web Forms View Engine">Removing the Web Forms View Engine</a><span class="Apple-converted-space"> </span>shows how to unregister the Web Forms View Engine (leaving only the Razor View Engine):</div>
<div id="RemovingViewEngine" style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
<b>Removing the Web Forms View Engine. </b></div>
<pre class="programlisting" style="background-color: #f2f2f2; background-position: initial initial; background-repeat: initial initial; border: 1px solid rgb(221, 221, 221); font-family: monospace; margin: 1em 0px; padding: 1em; white-space: pre-wrap; word-wrap: break-word;">var viewEngines = System.Web.Mvc.ViewEngines.Engines;
var webFormsEngine = viewEngines.OfType<webformviewengine>().FirstOrDefault();
if (webFormsEngine != null)
viewEngines.Remove(webFormsEngine);</webformviewengine></pre>
<div class="comment_container" id="c_RemovingViewEngine" style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em; position: relative;">
<div class="comment_count" id="comment_count_for_RemovingViewEngine" style="bottom: 2px; font-family: Verdana, sans-serif; font-size: 11px; height: 20px; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; padding-right: 20px; position: absolute; right: -183px; text-align: right; width: 150px; word-wrap: break-word;">
<a class="comment_count no_comments" href="http://ofps.oreilly.com/titles/9781449320317/_best_practices.html#" id="comment_link_for_RemovingViewEngine" style="color: grey; text-decoration: initial;"><img src="http://ofps.oreilly.com/static/images/comment-arrow.png" style="border: none; left: 7px; position: absolute;" />Add a comment</a></div>
</div>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
Just execute this snippet during the application’s start-up phase and it will no longer waste time looking for views that aren’t there!</div>
</div>
<div class="sect1" lang="en" style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; color: #333333; font-family: Verdana, sans-serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 20px; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;">
<div class="titlepage" style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<div style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<div style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<h2 class="title" id="_consider_custom_literal_actionresult_literal_for_unique_scenarios" style="color: #990000; font-family: serif; font-size: 1.25em; font-weight: bold; line-height: 1.25em; margin: 0.5em 0px;">
Consider Custom<span class="Apple-converted-space"> </span><code class="literal" style="font-family: monospace;">ActionResult</code><span class="Apple-converted-space"> </span>For Unique Scenarios</h2>
</div>
</div>
</div>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
The ASP.NET MVC Request Pipeline has a deliberate separation of concerns in which each step in the process completes its task and no more. Each step does merely enough to provide the subsequent tasks with enough information to do what they need to do. For instance, a controller action that decides a view should be rendered to the client does not load up a view engine and order it to execute the view, it merely returns a ViewResult object with the information that the Framework needs to take the next steps (most likely loading a view engine and executing the view!).</div>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
When it comes to results of controller actions, declarative is the name of the game. For instance, the ASP.NET MVC Framework provides an HttpStatusCodeResult with a StatusCode property, but it also goes one step further to define a custom HttpStatusCodeResult named HttpUnauthorizedResult. Though the following two lines are effectively the same, the latter provides a more declarative and strongly-typed expression of the controller’s intent.</div>
<pre class="programlisting" style="background-color: #f2f2f2; background-position: initial initial; background-repeat: initial initial; border: 1px solid rgb(221, 221, 221); font-family: monospace; margin: 1em 0px; padding: 1em; white-space: pre-wrap; word-wrap: break-word;"> return new HttpStatusCodeResult(HttpStatusCode.Unauthorized);
return new HttpUnauthorizedResult();</pre>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
When your actions produce results that don’t fit the "normal results", take a moment to consider whether returning a custom Action Result may be more appropriate. Some common examples include things like RSS feeds, Word documents, Excel spreadsheets, etc.</div>
</div>
<div class="sect1" lang="en" style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; color: #333333; font-family: Verdana, sans-serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 20px; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;">
<div class="titlepage" style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<div style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<div style="font-family: Verdana, sans-serif; font-size: 16px; line-height: 1.25em;">
<h2 class="title" id="_consider_asynchronous_controllers_for_controller_tasks_that_can_happen_in_parallel" style="color: #990000; font-family: serif; font-size: 1.25em; font-weight: bold; line-height: 1.25em; margin: 0.5em 0px;">
Consider Asynchronous Controllers For Controller Tasks That Can Happen In Parallel</h2>
</div>
</div>
</div>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
Parallel execution of multiple tasks can offer significant opportunities to enhance the performance of your site. To this end, ASP.NET MVC offers the<span class="Apple-converted-space"> </span><code class="literal" style="font-family: monospace;">AsyncController</code>base class to help make processing multi-threaded requests easier. When creating an action with processor-intensive logic, consider whether that action has any elements that may be safely run in parallel. See<span class="Apple-converted-space"> </span><a class="xref" href="http://ofps.oreilly.com/titles/9781449320317/ch_Parallelization.html" style="color: #87388c; text-decoration: initial;" title="Chapter 11. Parallel, Asynchronous, and Real-Time Data Operations">Chapter 11,<span class="Apple-converted-space"> </span><i>Parallel, Asynchronous, and Real-Time Data Operations</i></a><span class="Apple-converted-space"> </span>for more information.</div>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
<br /></div>
<div style="font-family: Verdana, sans-serif; font-size: 1em; line-height: 1.325em; margin-bottom: 0.5em; margin-top: 0.5em; word-wrap: break-word;">
Source: <a href="http://ofps.oreilly.com/titles/9781449320317/_best_practices.html" target="_blank">Programming ASP.NET MVC 4</a> </div>
</div>
Anonymoushttp://www.blogger.com/profile/17445191350548842437noreply@blogger.comtag:blogger.com,1999:blog-1002597578696693985.post-76605555959532443392011-09-16T19:12:00.000-07:002011-09-16T19:28:37.615-07:00ASP.NET MVC - Upgrading an Existing Preview2 Application to Preview 3<blockquote><h1 style="line-height: normal;"></h1><div class="MsoNormal">The information in this section describes the changes you must make to modify an ASP.NET MVC application that was created with the Preview 2 release so that it works with the Preview 3 release.</div><h2 style="line-height: normal;"><i>Code Changes</i></h2><div class="BulletedList1"><span style="font-family: Symbol;">·<span style="font-family: "; font-size: 7;"> </span></span>Update the references to the following assemblies to point to the new Preview 3 versions of the assemblies: </div><ul><li><b><span class="LanguageKeyword"><span style="font-family: Symbol; font-weight: normal;">·<span style="font-family: "; font-size: 7;"> </span></span></span><span class="LanguageKeyword">System.Web.Abstractions</span></b></li>
<li><b><span class="LanguageKeyword"><span style="font-family: Symbol; font-weight: normal;">·<span style="font-family: "; font-size: 7;"> </span></span></span><span class="LanguageKeyword">System.Web.Routing</span></b></li>
<li><b><span class="LanguageKeyword"><span style="font-family: Symbol; font-weight: normal;">·<span style="font-family: "; font-size: 7;"> </span></span></span><span class="LanguageKeyword">System.Web.Mvc</span></b></li>
</ul><div class="Textinlist1">By default, these assemblies are located in the following folder:</div></blockquote><br />
<blockquote><div class="CodeinList1" style="color: #073763; font-family: "Courier New",Courier,monospace;">%ProgramFiles%\Microsoft ASP.NET\ASP.NET MVC Preview 3</div></blockquote><br />
<blockquote><div class="BulletedList1"><ul><li>For all existing action methods, change the return type from <b style="background-color: #f3f3f3; color: #073763; font-family: "Courier New",Courier,monospace;"><span class="LanguageKeyword">void</span></b><b style="background-color: #f3f3f3; color: #073763;"><span style="font-family: "Courier New",Courier,monospace;"> </span></b>to <b style="color: #073763; font-family: "Courier New",Courier,monospace;"><span class="LanguageKeyword">ActionResult</span></b>.</li>
</ul></div><div class="BulletedList1"><ul><li>Anywhere you call <b style="color: #073763; font-family: "Courier New",Courier,monospace;"><span class="LanguageKeyword">RenderView</span></b>, change it to a call to return View. You can search for <b style="color: #073763; font-family: "Courier New",Courier,monospace;">RenderView</b>( and replace it with return <b style="color: #073763; font-family: "Courier New",Courier,monospace;">View</b>(.</li>
</ul></div><div class="BulletedList1"><ul><li>Anywhere you call <b style="color: #073763;"><span style="font-family: "Courier New",Courier,monospace;">RedirectToAction</span></b>, prepend the call with the return keyword. Search for <b style="color: #073763;"><span style="font-family: "Courier New",Courier,monospace;">RedirectToAction</span></b>( and replace it with return RedirectToAction(.</li>
</ul></div><div class="BulletedList1"><ul><li>If you use a strongly typed page, replace <b><span style="color: #073763; font-family: "Courier New",Courier,monospace;"><%= ViewData.PropertyName %></span></b> with <b><span style="color: #073763; font-family: "Courier New",Courier,monospace;"><%= ViewData.Model.PropertyName%></span></b>. Rather than replacing the ViewData object with your strongly typed object, the MVC framework now sets the Model property to the instance that you provide.</li>
</ul></div><div class="BulletedList1"><ul><li><span style="font-family: Symbol;"></span>In the <b style="color: #073763; font-family: "Courier New",Courier,monospace;">Global.asax</b> file, remove the route definition for <b style="color: #073763; font-family: "Courier New",Courier,monospace;">Default.aspx</b>. In the default Preview 2 template, the route looked like the following example:</li>
</ul></div><div class="CodeinList1" style="color: #073763; font-family: "Courier New",Courier,monospace;"><span style="font-size: small;">routes.Add(new Route("Default.aspx", new MvcRouteHandler())</span></div><div class="CodeinList1" style="color: #073763; font-family: "Courier New",Courier,monospace;"><span style="font-size: small;">{</span></div><div class="CodeinList1" style="color: #073763; font-family: "Courier New",Courier,monospace;"><span style="font-size: small;"> Defaults = new RouteValueDictionary(new { controller = "Home", action = "Index", id = "" }),</span></div><div class="CodeinList1" style="color: #073763; font-family: "Courier New",Courier,monospace;"><span style="font-size: small;">});</span></div><div class="BulletedList1"><ul><li><span style="font-family: Symbol;"><span style="font-family: "; font-size: 7;"></span></span>In the<b style="color: #073763; font-family: "Courier New",Courier,monospace;"> Global.asax</b> file, find the following default MVC route:</li>
</ul></div><div class="CodeinList1" style="color: #073763; font-family: "Courier New",Courier,monospace;"><span style="font-size: small;">routes.Add(new Route("{controller}/{action}/{id}", new MvcRouteHandler())</span></div><div class="CodeinList1" style="color: #073763; font-family: "Courier New",Courier,monospace;"><span style="font-size: small;">{</span></div><div class="CodeinList1" style="color: #073763; font-family: "Courier New",Courier,monospace;"><span style="font-size: small;">Defaults = new RouteValueDictionary(new { action = "Index", id = "" }),</span></div><div class="CodeinList1" style="color: #073763; font-family: "Courier New",Courier,monospace;"><span style="font-size: small;">});</span></div><div class="Textinlist1">Replace it with the following route:</div><div class="CodeinList1" style="color: #073763; font-family: "Courier New",Courier,monospace;"><span style="font-size: small;">routes.MapRoute(</span></div><div class="CodeinList1" style="color: #073763; font-family: "Courier New",Courier,monospace;"><span style="font-size: small;">"Default", // Route name</span></div><div class="CodeinList1" style="color: #073763; font-family: "Courier New",Courier,monospace;"><span style="font-size: small;">"{controller}/{action}/{id}", // URL with parameters</span></div><div class="CodeinList1" style="color: #073763; font-family: "Courier New",Courier,monospace;"><span style="font-size: small;">new { controller = "Home", action = "Index", id = "" } // Parameter defaults</span></div><div class="CodeinList1" style="color: #073763; font-family: "Courier New",Courier,monospace;"><span style="font-size: small;">);</span></div><div class="BulletedList1"><ul><li><span style="font-family: Symbol;"></span>Add the following line at the very beginning of the <b style="color: #073763;"><span class="LanguageKeyword" style="font-family: "Courier New",Courier,monospace;">RegisterRoutes</span><span style="font-family: "Courier New",Courier,monospace;"> </span></b>method:</li>
</ul></div><div class="CodeinList1" style="color: #073763; font-family: "Courier New",Courier,monospace;"><span style="font-size: small;">routes.IgnoreRoute("{resource}.axd/{*pathInfo}");</span></div><div class="BulletedList1"><ul><li><span style="font-family: Symbol;"></span>Edit the <b style="color: #073763;"><span style="font-family: "Courier New",Courier,monospace;">Default.aspx </span></b>file and add the following line: </li>
</ul></div><div class="CodeinList1" style="color: #073763; font-family: "Courier New",Courier,monospace;"><span style="font-size: small;"><% Response.Redirect("~/Home") %></span></div><div class="Textinlist1"></div></blockquote><br />
<blockquote><div class="Textinlist1">This redirect is not necessary for IIS 7. This is a workaround for an issue with how the Web server that is built into Visual Studio (the ASP.NET Development Server) works with routing.</div><h2 style="line-height: normal;">Configuration Changes</h2><div class="BulletedList1"><ul><li><span style="font-family: Symbol;"></span>In the Web.config file, you must change the <span class="LanguageKeyword">type</span> attribute of the <span class="LanguageKeyword">httpHandler</span> entry in the section for <span class="LanguageKeyword">UrlRoutingHandler</span> to <span class="LanguageKeyword">System.Web.HttpForbiddenHandler</span>. To do this, search for the following string in the file:</li>
</ul></div><div class="CodeinList2" style="color: #073763; font-family: "Courier New",Courier,monospace;"><span style="font-size: small;">path="UrlRouting.axd" type="System.Web.Routing.UrlRoutingHandler, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" </span></div><div class="Textinlist1"><span style="font-size: small;">Replace it with the following string:</span></div><div class="CodeinList2" style="color: #073763; font-family: "Courier New",Courier,monospace;"><span style="font-size: small;">path="UrlRouting.axd" type="System.Web.HttpForbiddenHandler, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"</span></div><div class="BulletedList1"><ul><li><span style="font-family: Symbol;"></span>Because the version numbers of the <b style="color: #073763; font-family: "Courier New",Courier,monospace;"><span class="LanguageKeyword">System.Web.Abstractions</span></b> and <b style="color: #073763;"><span class="LanguageKeyword" style="font-family: "Courier New",Courier,monospace;">System.Web.Routing</span><span style="font-family: "Courier New",Courier,monospace;"> </span></b>assemblies have been changed to 0.0.0.0, you must update version information in the <b style="color: #073763; font-family: "Courier New",Courier,monospace;">Web.config</b> file. In the Web.config file, search for the following string: </li>
</ul></div><div class="CodeinList2" style="color: #073763; font-family: "Courier New",Courier,monospace;"><b>System.Web.Routing, Version=3.5.0.0 </b></div><div class="Textinlist1" style="color: #073763; font-family: "Courier New",Courier,monospace;"><b>Replace it with the following string:</b></div><div class="CodeinList2" style="color: #073763; font-family: "Courier New",Courier,monospace;"><b>System.Web.Routing, Version=0.0.0.0</b></div><div class="Textinlist1" style="color: #073763; font-family: "Courier New",Courier,monospace;"><b>Search for the following string:</b></div><div class="CodeinList2" style="color: #073763; font-family: "Courier New",Courier,monospace;"><b>System.Web.Abstractions, Version=3.5.0.0</b></div><div class="Textinlist1" style="color: #073763; font-family: "Courier New",Courier,monospace;"><b>Replace it with the following string:</b></div><div class="CodeinList2" style="color: #073763; font-family: "Courier New",Courier,monospace;"><b>System.Web.Abstractions, Version=0.0.0.0</b></div></blockquote><br />
<a href="http://www.asp.net/mvc">http://www.asp.net/mvc</a>Anonymoushttp://www.blogger.com/profile/17445191350548842437noreply@blogger.comtag:blogger.com,1999:blog-1002597578696693985.post-6192898554279312772011-07-10T21:54:00.000-07:002011-07-10T21:56:30.603-07:00June 26th Links: ASP.NET, ASP.NET MVC, .NET and NuGet<h2><u>ASP.NET</u></h2> <ul><li> <p><a href="http://www.hanselman.com/blog/IntroducingSystemWebProvidersASPNETUniversalProvidersForSessionMembershipRolesAndUserProfileOnSQLCompactAndSQLAzure.aspx" target="_blank">Introducing new ASP.NET Universal Providers</a>: Great post from Scott Hanselman on the new System.Web.Providers we are working on. This release delivers new ASP.NET Membership, Role Management, Session, Profile providers that work with SQL Server, SQL CE and SQL Azure.</p> </li></ul> <ul><li> <p><a href="http://dotnetslackers.com/articles/aspnet/CSS-Sprites-and-the-ASP-NET-Sprite-and-Image-Optimization-Library.aspx" target="_blank">CSS Sprites and the ASP.NET Sprite and Image Optimization Library:</a> Great post from Scott Mitchell that talks about a free library for ASP.NET that you can use to optimize your CSS and images to reduce HTTP requests and speed up your site.</p> </li></ul> <ul><li> <p><a href="http://www.hanselman.com/blog/AnnouncingTheWebStandardsUpdateHTML5SupportForTheVisualStudio2010Editor.aspx" target="_blank">Better HTML5 Support for the VS 2010 Editor</a>: Another great post from Scott Hanselman on an update several people on my team did that enables richer HTML5 editing support within Visual Studio 2010.</p> </li></ul> <ul><li> <p><a href="http://stephenwalther.com/blog/archive/2011/05/23/install-the-ajax-control-toolkit-from-nuget.aspx" target="_blank">Install the Ajax Control Toolkit from NuGet:</a> Nice post by Stephen Walther on how you can now use NuGet to install the Ajax Control Toolkit within your applications. This makes it much easier to reference and use.</p> </li></ul> <ul><li> <p><a href="http://stephenwalther.com/blog/archive/2011/05/09/may-2011-release-of-the-ajax-control-toolkit.aspx" target="_blank">May 2011 Release of the Ajax Control Toolkit</a>: Another great post from Stephen Walther that talks about the May release of the Ajax Control Toolkit. It includes a bunch of nice enhancements and fixes.</p> </li></ul> <ul><li> <p><a href="http://blog.paulbetts.org/index.php/2011/06/06/new-release-sassandcoffee-0-9-now-not-glacially-slow/" target="_blank">SassAndCoffee 0.9 Released</a>: Paul Betts blogs about the latest release of his SassAndCoffee extension (available via NuGet). It enables you to easily use Sass and Coffeescript within your ASP.NET applications (both MVC and Webforms).</p> </li></ul> <h2><u>ASP.NET MVC</u></h2> <ul><li> <p><a href="http://code.google.com/p/mvc-mini-profiler/" target="_blank">ASP.NET MVC Mini-Profiler</a>: The folks at StackOverflow.com (a great site built with ASP.NET MVC) have released a nice (free) profiler they’ve built that enables you to easily profile your ASP.NET MVC 3 sites and tune them for performance. </p> </li></ul> <ul><li> <p><a href="http://www.hanselman.com/blog/GlobalizationInternationalizationAndLocalizationInASPNETMVC3JavaScriptAndJQueryPart1.aspx" target="_blank">Globalization, Internationalization and Localization in ASP.NET MVC 3:</a> Great post from Scott Hanselman on how to enable internationalization, globalization and localization support within your ASP.NET MVC 3 and jQuery solutions.</p> </li></ul> <ul><li> <p><a href="http://blog.davidebbo.com/2011/06/precompile-your-mvc-views-using.html" target="_blank">Precompile your MVC Razor Views</a>: Great post from David Ebbo that discusses a new Razor Generator tool that enables you to pre-compile your razor view templates as assemblies – which enables a bunch of cool scenarios.</p> </li></ul> <ul><li> <p><a href="http://blog.davidebbo.com/2011/06/unit-test-your-mvc-views-using-razor.html" target="_blank">Unit Testing Razor Views</a>: Nice post from David Ebbo that shows how to use his new Razor Generator to enable unit testing of razor view templates with ASP.NET MVC.</p> </li></ul> <ul><li> <p><a href="http://haacked.com/archive/2011/05/25/bin-deploying-asp-net-mvc-3.aspx" target="_blank">Bin Deploying ASP.NET MVC 3</a>: Nice post by Phil Haack that covers a cool feature added to VS 2010 SP1 that makes it really easy to \bin deploy ASP.NET MVC and Razor within your application. This enables you to easily deploy the app to servers that don’t have ASP.NET MVC 3 installed.</p> </li></ul> <h2><u>.NET</u></h2> <ul><li> <p><a href="http://weblogs.asp.net/manavi/archive/2011/04/24/associations-in-ef-4-1-code-first-part-4-table-splitting.aspx" target="_blank">Table Splitting with EF 4.1 Code First</a>: Great post from Morteza Manavi that discusses how to split up a single database table across multiple EF entity classes. This shows off some of the power behind EF 4.1 and is very useful when working with legacy database schemas.</p> </li></ul> <ul><li> <p><a href="http://geekswithblogs.net/BlackRabbitCoder/archive/2011/06/16/c.net-fundamentals-choosing-the-right-collection-class.aspx" target="_blank">Choosing the Right Collection Class</a>: Nice post from James Michael Hare that talks about the different collection class options available within .NET. A nice overview for people who haven’t looked at all of the support now built into the framework.</p> </li></ul> <ul><li> <p><a href="http://geekswithblogs.net/BlackRabbitCoder/archive/2011/06/02/c.net-little-wonders-empty-defaultifempty-and-count.aspx" target="_blank">Little Wonders: Empty(), DefaultIfEmpty() and Count() helper methods</a>: Another in James Michael Hare’s excellent series on .NET/C# “Little Wonders”. This post covers some of the great helper methods now built-into .NET that make coding even easier.</p> </li></ul> <h2><u>NuGet</u></h2> <ul><li> <p><a href="http://docs.nuget.org/docs/release-notes/nuget-1.4" target="_blank">NuGet 1.4 Released</a>: Learn all about the latest release of NuGet – which includes a bunch of cool new capabilities. It takes only seconds to update to it – go for it!</p> </li></ul> <ul><li> <p><a href="http://channel9.msdn.com/Events/DevDays/DevDays-2011-Netherlands/Devdays027" target="_blank">NuGet in Depth:</a> Nice presentation from Scott Hanselman all about NuGet and some of the investments we are making to enable a better open source ecosystem within .NET. </p> </li></ul> <ul><li> <p><a href="http://www.hanselman.com/blog/NuGetForTheEnterpriseNuGetInAContinuousIntegrationAutomatedBuildSystem.aspx" target="_blank">NuGet for the Enterprise – NuGet in a Continuous Integration Automated Build System</a>: Great post from Scott Hanselman on how to integrate NuGet within enterprise build environments and enable it with CI solutions.</p></li></ul>Original post can be found <a href="http://weblogs.asp.net/scottgu/archive/2011/06/26/june-26th-links-asp-net-asp-net-mvc-net-and-nuget.aspx" target="_blank">here...</a>Anonymoushttp://www.blogger.com/profile/17445191350548842437noreply@blogger.comtag:blogger.com,1999:blog-1002597578696693985.post-54339044324743884972010-01-29T02:11:00.001-08:002010-01-29T02:11:40.595-08:00Scott Hanselman's ASP.NET Interview Questions<p>I do a LOT of interviewing here, and for a while we were hiring ASP.NET people. Here's some of the questions that I asked them. I came up with these questions because you'd "just know" this stuff if you spent time working on a REAL WORLD ASP.NET site - through design, development, debugging, production debugging, and deployment. <p>Do they suck? Did I miss any? How do you think people did? <ul> <li>From constructor to destructor (taking into consideration Dispose() and the concept of non-deterministic finalization), what the are events fired as part of the ASP.NET System.Web.UI.Page lifecycle. Why are they important? What interesting things can you do at each? <li>What are ASHX files? What are HttpHandlers? Where can they be configured? <li>What is needed to configure a new extension for use in ASP.NET? For example, what if I wanted my system to serve ASPX files with a *.jsp extension? <li>What events fire when binding data to a data grid? What are they good for? <li>Explain how PostBacks work, on both the client-side and server-side. How do I chain my own JavaScript into the client side without losing PostBack functionality? <li>How does ViewState work and why is it either useful or evil? <li>What is the OO relationship between an ASPX page and its CS/VB code behind file in ASP.NET 1.1? in 2.0? <li>What happens from the point an HTTP request is received on a TCP/IP port up until the Page fires the On_Load event? <li>How does IIS communicate at runtime with ASP.NET? Where is ASP.NET at runtime in IIS5? IIS6? <li>What is an assembly binding redirect? Where are the places an administrator or developer can affect how assembly binding policy is applied? <li>Compare and contrast LoadLibrary(), CoCreateInstance(), CreateObject() and Assembly.Load().</li></ul> <p>-<a href="http://www.hanselman.com/blog/">Scott Hanselman's</a></p> Anonymoushttp://www.blogger.com/profile/17445191350548842437noreply@blogger.comtag:blogger.com,1999:blog-1002597578696693985.post-35564653176617986852009-10-23T01:00:00.001-07:002009-10-23T01:14:19.174-07:00C# interview questions and answers<li><b>What’s the advantage of using System.Text.StringBuilder over System.String? </b>StringBuilder is more efficient in the cases, where a lot of manipulation is done to the text. Strings are immutable, so each time it’s being operated on, a new instance is created. </li> <p> </p> <li><b>Can you store multiple data types in System.Array? </b>No.</li> <p> </p> <li><b>What’s the difference between the System.Array.CopyTo() and System.Array.Clone()? </b>The first one performs a deep copy of the array, the second one is shallow. </li> <p> </p> <li><b>How can you sort the elements of the array in descending order? </b>By calling Sort() and then Reverse() methods.</li> <p><b></b> </p> <li><b>What’s the .NET datatype that allows the retrieval of data by a unique key? </b>HashTable.</li> <p><b></b> </p> <li><b>What’s class SortedList underneath? </b>A sorted HashTable.</li> <p><b></b> </p> <li><b>Will <i>finally</i> block get executed if the exception had not occurred? </b>Yes.</li> <p><b></b> </p> <li><b>What’s the C# equivalent of C++ catch (…), which was a catch-all statement for any possible exception? </b>A catch block that catches the exception of type System.Exception. You can also omit the parameter data type in this case and just write catch {}.</li> <p><b></b> </p> <li><b>Can multiple catch blocks be executed? </b>No, once the proper catch code fires off, the control is transferred to the finally block (if there are any), and then whatever follows the finally block.</li> <p><b></b> </p> <li><b>Why is it a bad idea to throw your own exceptions? </b>Well, if at that point you know that an error has occurred, then why not write the proper code to handle that error instead of passing a new Exception object to the catch block? Throwing your own exceptions signifies some design flaws in the project.</li> <p><b></b> </p> <li><b>What’s a delegate? </b>A delegate object encapsulates a reference to a method. In C++ they were referred to as function pointers.</li> <p><b></b> </p> <li><b>What’s a multicast delegate? </b>It’s a delegate that points to and eventually fires off several methods.</li> <p><b></b> </p> <li><b>How’s the DLL Hell problem solved in .NET? </b>Assembly versioning allows the application to specify not only the library it needs to run (which was available under Win32), but also the version of the assembly.</li> <p><b></b> </p> <li><b>What are the ways to deploy an assembly? </b>An MSI installer, a CAB archive, and XCOPY command.</li> <p><b></b> </p> <li><b>What’s a satellite assembly? </b>When you write a multilingual or multi-cultural application in .NET, and want to distribute the core application separately from the localized modules, the localized assemblies that modify the core application are called satellite assemblies.</li> <p><b></b> </p> <li><b>What namespaces are necessary to create a localized application? </b>System.Globalization, System.Resources.</li> <p><b></b> </p> <li><b>What’s the difference between // comments, /* */ comments and /// comments? </b>Single-line, multi-line and XML documentation comments.</li> <p><b></b> </p> <li><b>How do you generate documentation from the C# file commented properly with a command-line compiler? </b>Compile it with a /doc switch.</li> <p><b></b> </p> <li><b>What’s the difference between <c> and <code> XML documentation tag? </b>Single line code example and multiple-line code example.</li> <p><b></b> </p> <li><b>Is XML case-sensitive? </b>Yes, so <Student> and <student> are different elements.</li> <p><b></b> </p> <li><b>What debugging tools come with the .NET SDK? </b>CorDBG – command-line debugger, and DbgCLR – graphic debugger. Visual Studio .NET uses the DbgCLR. To use CorDbg, you must compile the original C# file using the /debug switch.</li> <p><b></b> </p> <li><b>What does the This window show in the debugger? </b>It points to the object that’s pointed to by this reference. Object’s instance data is shown.</li> <p><b></b> </p> <li><b>What does assert() do? </b>In debug compilation, assert takes in a Boolean condition as a parameter, and shows the error dialog if the condition is false. The program proceeds without any interruption if the condition is true.</li> <p><b></b> </p> <li><b>What’s the difference between the Debug class and Trace class? Documentation looks the same. </b>Use Debug class for debug builds, use Trace class for both debug and release builds.</li> <p><b></b> </p> <li><b>Why are there five tracing levels in System.Diagnostics.TraceSwitcher? </b>The tracing dumps can be quite verbose and for some applications that are constantly running you run the risk of overloading the machine and the hard drive there. Five levels range from None to Verbose, allowing to fine-tune the tracing activities.</li> <p><b></b> </p> <li><b>Where is the output of TextWriterTraceListener redirected? </b>To the Console or a text file depending on the parameter passed to the constructor.</li> <p><b></b> </p> <li><b>How do you debug an ASP.NET Web application? </b>Attach the aspnet_wp.exe process to the DbgClr debugger.</li> <p><b></b> </p> <li><b>What are three test cases you should go through in unit testing? </b>Positive test cases (correct data, correct output), negative test cases (broken or missing data, proper handling), exception test cases (exceptions are thrown and caught properly).</li> <p><b></b> </p> <li><b>Can you change the value of a variable while debugging a C# application? </b>Yes, if you are debugging via Visual Studio.NET, just go to Immediate window.</li> <p><b></b> </p> <li><b>Explain the three services model (three-tier application). </b>Presentation (UI), business (logic and underlying code) and data (from storage or other sources).</li> <p><b></b> </p> <li><b>What are advantages and disadvantages of Microsoft-provided data provider classes in ADO.NET? </b>SQLServer.NET data provider is high-speed and robust, but requires SQL Server license purchased from Microsoft. OLE-DB.NET is universal for accessing other sources, like Oracle, DB2, Microsoft Access and Informix, but it’s a .NET layer on top of OLE layer, so not the fastest thing in the world. ODBC.NET is a deprecated layer provided for backward compatibility to ODBC engines.</li> <p><b></b> </p> <li><b>What’s the role of the DataReader class in ADO.NET connections? </b>It returns a read-only dataset from the data source when the command is executed.</li> <p><b></b> </p> <li><b>What is the wildcard character in SQL? Let’s say you want to query database with LIKE for all employees whose name starts with La. </b>The wildcard character is %, the proper query with LIKE would involve ‘La%’.</li> <p><b></b> </p> <li><b>Explain ACID rule of thumb for transactions. </b>Transaction must be Atomic (it is one unit of work and does not dependent on previous and following transactions), Consistent (data is either committed or roll back, no “in-between” case where something has been updated and something hasn’t), Isolated (no transaction sees the intermediate results of the current transaction), Durable (the values persist if the data had been committed even if the system crashes right after).</li> <p><b></b> </p> <li><b>What connections does Microsoft SQL Server support? </b>Windows Authentication (via Active Directory) and SQL Server authentication (via Microsoft SQL Server username and passwords).</li> <p><b></b> </p> <li><b>Which one is trusted and which one is untrusted? </b>Windows Authentication is trusted because the username and password are checked with the Active Directory, the SQL Server authentication is untrusted, since SQL Server is the only verifier participating in the transaction.</li> <p><b></b> </p> <li><b>Why would you use untrusted verificaion? </b>Web Services might use it, as well as non-Windows applications.</li> <p><b></b> </p> <li><b>What does the parameter Initial Catalog define inside Connection String? </b>The database name to connect to.</li> <p><b></b> </p> <li><b>What’s the data provider name to connect to Access database? </b>Microsoft.Access.</li> <p><b></b> </p> <li><b>What does Dispose method do with the connection object? </b>Deletes it from the memory.</li> <p><b></b> </p> <li><b>What is a pre-requisite for connection pooling? </b>Multiple processes must agree that they will share the same connection, where every parameter is the same, including the security settings.</li> <p> </p> <p>Original post can be found <a href="http://www.techinterviews.com/c-sharp-interview-questions-and-answers" target="_blank">here...</a></p> Anonymoushttp://www.blogger.com/profile/17445191350548842437noreply@blogger.comtag:blogger.com,1999:blog-1002597578696693985.post-21017791557086761742009-10-17T04:37:00.001-07:002009-10-17T05:09:20.034-07:00Visibility, support and software for professional Web Developers and Designers - at no upfront cost!*WebsiteSpark Program Details Microsoft® WebsiteSpark™ is designed to ignite the success of professional Web developers and designers. The program enables you to get software, support and business opportunities from Microsoft at no upfront costs for 3 years or exit from the program. Program Benefits WebSiteSpark provides access to a technology offering for development and production hosting of websites. Once enrolled, you can download the following software from Microsoft: * For design, development, testing and demonstration of new websites – for a total of up to three users per Web design and development company: read <a href="http://www.microsoft.com/web/websitespark/ShowItem.aspx?Category=wss-HomePage&Variable=Text1Learn" target="_blank">more...</a> Anonymoushttp://www.blogger.com/profile/17445191350548842437noreply@blogger.comtag:blogger.com,1999:blog-1002597578696693985.post-31301347349411150702009-10-03T23:14:00.000-07:002009-10-03T23:26:04.002-07:00Another PHP5 and C# OOP difference<span class="Apple-style-span" style=" color: rgb(34, 34, 34); font-family:'Lucida Grande', 'Lucida Sans Unicode', Helvetica, Arial, sans-serif;font-size:13px;"><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; line-height: 18px; ">A few days ago I have found out for myself about one more difference between PHP and C# OOP impelentations. Look at the following code snippet in PHP:</p><div id="highlighter_682007" class="syntaxhighlighter " style="padding-top: 1px !important; padding-right: 1px !important; padding-bottom: 1px !important; padding-left: 1px !important; margin-top: 1em !important; margin-right: 0px !important; margin-bottom: 1em !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(231, 229, 220) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: relative !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 693px; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><div class="lines" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><div class="line alt1" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><code class="number" style="padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; ">01.</code><span class="content" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(255, 255, 255) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;"><span class="block" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://s1.wordpress.com/wp-content/plugins/syntaxhighlighter-wpcom/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background- text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;color:initial !important;"><code class="keyword" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 102, 153) !important; background-position: initial initial !important; ">class</code> <code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">ParentClass {</code></span></span></div><div class="line alt2" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><code class="number" style="padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; ">02.</code><span class="content" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(248, 248, 248) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;"><span class="block" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 28px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://s1.wordpress.com/wp-content/plugins/syntaxhighlighter-wpcom/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background- text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;color:initial !important;"><code class="keyword" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 102, 153) !important; background-position: initial initial !important; ">public</code> <code class="variable" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(170, 119, 0) !important; background-position: initial initial !important; ">$val</code> <code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">= </code><code class="string" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: blue !important; background-position: initial initial !important; ">'Parent'</code><code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">;</code></span></span></div><div class="line alt1" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><code class="number" style="padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; ">03.</code><span class="content" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(255, 255, 255) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;"><span class="block" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://s1.wordpress.com/wp-content/plugins/syntaxhighlighter-wpcom/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background- text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;color:initial !important;"> </span></span></div><div class="line alt2" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><code class="number" style="padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; ">04.</code><span class="content" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(248, 248, 248) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;"><span class="block" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 28px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://s1.wordpress.com/wp-content/plugins/syntaxhighlighter-wpcom/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background- text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;color:initial !important;"><code class="keyword" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 102, 153) !important; background-position: initial initial !important; ">public</code> <code class="keyword" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 102, 153) !important; background-position: initial initial !important; ">function</code> <code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">GetValue()</code></span></span></div><div class="line alt1" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><code class="number" style="padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; ">05.</code><span class="content" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(255, 255, 255) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;"><span class="block" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 28px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://s1.wordpress.com/wp-content/plugins/syntaxhighlighter-wpcom/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background- text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;color:initial !important;"><code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">{</code></span></span></div><div class="line alt2" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><code class="number" style="padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; ">06.</code><span class="content" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(248, 248, 248) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;"><span class="block" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 56px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://s1.wordpress.com/wp-content/plugins/syntaxhighlighter-wpcom/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background- text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;color:initial !important;"><code class="functions" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(255, 20, 147) !important; background-position: initial initial !important; ">echo</code> <code class="variable" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(170, 119, 0) !important; background-position: initial initial !important; ">$this</code><code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">->val;</code></span></span></div><div class="line alt1" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><code class="number" style="padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; ">07.</code><span class="content" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(255, 255, 255) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;"><span class="block" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 28px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://s1.wordpress.com/wp-content/plugins/syntaxhighlighter-wpcom/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background- text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;color:initial !important;"><code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">}</code></span></span></div><div class="line alt2" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><code class="number" style="padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; ">08.</code><span class="content" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(248, 248, 248) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;"><span class="block" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://s1.wordpress.com/wp-content/plugins/syntaxhighlighter-wpcom/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background- text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;color:initial !important;"><code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">}</code></span></span></div><div class="line alt1" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><code class="number" style="padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; ">09.</code><span class="content" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(255, 255, 255) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;"><span class="block" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://s1.wordpress.com/wp-content/plugins/syntaxhighlighter-wpcom/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background- text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;color:initial !important;"> </span></span></div><div class="line alt2" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><code class="number" style="padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; ">10.</code><span class="content" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(248, 248, 248) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;"><span class="block" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://s1.wordpress.com/wp-content/plugins/syntaxhighlighter-wpcom/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background- text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;color:initial !important;"><code class="keyword" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 102, 153) !important; background-position: initial initial !important; ">class</code> <code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">ChildClass </code><code class="keyword" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 102, 153) !important; background-position: initial initial !important; ">extends</code> <code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">ParentClass {</code></span></span></div><div class="line alt1" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><code class="number" style="padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; ">11.</code><span class="content" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(255, 255, 255) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;"><span class="block" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 35px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://s1.wordpress.com/wp-content/plugins/syntaxhighlighter-wpcom/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background- text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;color:initial !important;"><code class="keyword" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 102, 153) !important; background-position: initial initial !important; ">public</code> <code class="variable" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(170, 119, 0) !important; background-position: initial initial !important; ">$val</code> <code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">= </code><code class="string" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: blue !important; background-position: initial initial !important; ">'Child'</code><code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">;</code></span></span></div><div class="line alt2" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><code class="number" style="padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; ">12.</code><span class="content" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(248, 248, 248) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;"><span class="block" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://s1.wordpress.com/wp-content/plugins/syntaxhighlighter-wpcom/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background- text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;color:initial !important;"><code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">}</code></span></span></div><div class="line alt1" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><code class="number" style="padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; ">13.</code><span class="content" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(255, 255, 255) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;"><span class="block" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://s1.wordpress.com/wp-content/plugins/syntaxhighlighter-wpcom/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background- text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;color:initial !important;"> </span></span></div><div class="line alt2" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><code class="number" style="padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; ">14.</code><span class="content" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(248, 248, 248) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;"><span class="block" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://s1.wordpress.com/wp-content/plugins/syntaxhighlighter-wpcom/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background- text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;color:initial !important;"><code class="variable" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(170, 119, 0) !important; background-position: initial initial !important; ">$a</code> <code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">= </code><code class="keyword" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 102, 153) !important; background-position: initial initial !important; ">new</code> <code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">ChildClass();</code></span></span></div><div class="line alt1" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><code class="number" style="padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; ">15.</code><span class="content" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(255, 255, 255) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;"><span class="block" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://s1.wordpress.com/wp-content/plugins/syntaxhighlighter-wpcom/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background- text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;color:initial !important;"><code class="variable" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(170, 119, 0) !important; background-position: initial initial !important; ">$a</code><code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">->GetValue();</code></span></span></div></div></div><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; line-height: 18px; ">What do you expect it to show – ‘Parent’ or ‘Child’? The <a href="http://ru2.php.net/manual/en/language.oop5.visibility.php" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 68, 119); text-decoration: underline; ">PHP manual</a> says the result will be ‘Child’. And it seems quite logical to me as I would expect public property to be overridden.</p><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; line-height: 18px; ">Now rewrite the same code to C#:</p><div id="highlighter_644788" class="syntaxhighlighter " style="padding-top: 1px !important; padding-right: 1px !important; padding-bottom: 1px !important; padding-left: 1px !important; margin-top: 1em !important; margin-right: 0px !important; margin-bottom: 1em !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(231, 229, 220) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: relative !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 693px; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><div class="lines" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><div class="line alt1" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><code class="number" style="padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; ">01.</code><span class="content" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(255, 255, 255) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;"><span class="block" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://s1.wordpress.com/wp-content/plugins/syntaxhighlighter-wpcom/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background- text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;color:initial !important;"><code class="keyword" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 102, 153) !important; background-position: initial initial !important; ">class</code> <code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">Parent {</code></span></span></div><div class="line alt2" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><code class="number" style="padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; ">02.</code><span class="content" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(248, 248, 248) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;"><span class="block" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 35px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://s1.wordpress.com/wp-content/plugins/syntaxhighlighter-wpcom/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background- text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;color:initial !important;"><code class="keyword" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 102, 153) !important; background-position: initial initial !important; ">public</code> <code class="keyword" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 102, 153) !important; background-position: initial initial !important; ">string</code> <code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">val = </code><code class="string" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: blue !important; background-position: initial initial !important; ">"Parent"</code><code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">;</code></span></span></div><div class="line alt1" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><code class="number" style="padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; ">03.</code><span class="content" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(255, 255, 255) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;"><span class="block" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://s1.wordpress.com/wp-content/plugins/syntaxhighlighter-wpcom/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background- text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;color:initial !important;"> </span></span></div><div class="line alt2" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><code class="number" style="padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; ">04.</code><span class="content" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(248, 248, 248) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;"><span class="block" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 35px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://s1.wordpress.com/wp-content/plugins/syntaxhighlighter-wpcom/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background- text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;color:initial !important;"><code class="keyword" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 102, 153) !important; background-position: initial initial !important; ">public</code> <code class="keyword" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 102, 153) !important; background-position: initial initial !important; ">void</code> <code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">GetValue() {</code></span></span></div><div class="line alt1" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><code class="number" style="padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; ">05.</code><span class="content" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(255, 255, 255) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;"><span class="block" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 84px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://s1.wordpress.com/wp-content/plugins/syntaxhighlighter-wpcom/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background- text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;color:initial !important;"><code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">Console.WriteLine(</code><code class="keyword" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 102, 153) !important; background-position: initial initial !important; ">this</code><code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">.val);</code></span></span></div><div class="line alt2" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><code class="number" style="padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; ">06.</code><span class="content" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(248, 248, 248) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;"><span class="block" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 35px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://s1.wordpress.com/wp-content/plugins/syntaxhighlighter-wpcom/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background- text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;color:initial !important;"><code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">}</code></span></span></div><div class="line alt1" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><code class="number" style="padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; ">07.</code><span class="content" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(255, 255, 255) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;"><span class="block" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://s1.wordpress.com/wp-content/plugins/syntaxhighlighter-wpcom/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background- text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;color:initial !important;"><code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">}</code></span></span></div><div class="line alt2" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><code class="number" style="padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; ">08.</code><span class="content" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(248, 248, 248) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;"><span class="block" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://s1.wordpress.com/wp-content/plugins/syntaxhighlighter-wpcom/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background- text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;color:initial !important;"> </span></span></div><div class="line alt1" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><code class="number" style="padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; ">09.</code><span class="content" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(255, 255, 255) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;"><span class="block" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://s1.wordpress.com/wp-content/plugins/syntaxhighlighter-wpcom/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background- text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;color:initial !important;"><code class="keyword" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 102, 153) !important; background-position: initial initial !important; ">class</code> <code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">Child:Parent {</code></span></span></div><div class="line alt2" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><code class="number" style="padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; ">10.</code><span class="content" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(248, 248, 248) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;"><span class="block" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 35px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://s1.wordpress.com/wp-content/plugins/syntaxhighlighter-wpcom/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background- text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;color:initial !important;"><code class="keyword" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 102, 153) !important; background-position: initial initial !important; ">public</code> <code class="keyword" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 102, 153) !important; background-position: initial initial !important; ">string</code> <code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">val = </code><code class="string" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: blue !important; background-position: initial initial !important; ">"Child"</code><code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">;</code></span></span></div><div class="line alt1" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><code class="number" style="padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; ">11.</code><span class="content" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(255, 255, 255) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;"><span class="block" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://s1.wordpress.com/wp-content/plugins/syntaxhighlighter-wpcom/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background- text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;color:initial !important;"><code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">}</code></span></span></div><div class="line alt2" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><code class="number" style="padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; ">12.</code><span class="content" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(248, 248, 248) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;"><span class="block" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://s1.wordpress.com/wp-content/plugins/syntaxhighlighter-wpcom/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background- text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;color:initial !important;"> </span></span></div><div class="line alt1" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><code class="number" style="padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; ">13.</code><span class="content" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(255, 255, 255) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;"><span class="block" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://s1.wordpress.com/wp-content/plugins/syntaxhighlighter-wpcom/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background- text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;color:initial !important;"><code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">Child child = </code><code class="keyword" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 102, 153) !important; background-position: initial initial !important; ">new</code> <code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">Child();</code></span></span></div><div class="line alt2" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><code class="number" style="padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; ">14.</code><span class="content" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(248, 248, 248) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;"><span class="block" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://s1.wordpress.com/wp-content/plugins/syntaxhighlighter-wpcom/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background- text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;color:initial !important;"><code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">child.getValue();</code></span></span></div></div></div><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; line-height: 18px; ">Run the code and you will get ‘Parent’…</p><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; line-height: 18px; ">Change access modifier of <code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">val</code> to private in the parent class. Now both PHP and C# outputs the same – ‘Parent’. Why?</p><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; line-height: 18px; ">First thing to mention is that unlike PHP, public identifiers cannot be overridden in C#. Calling <code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">GetValue()</code>,<code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">this</code> points to parent object and returns “not overridden” value of <code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">val</code> as a result. Private identifers inside parent are not accessible for the child and therefore are not overridden so everything becomes clear.</p><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; line-height: 18px; ">To make C# behavior similar to PHP you should either add a method with the same signature and with override keyword to Child class and mark parent method as virtual:</p><div id="highlighter_314628" class="syntaxhighlighter " style="padding-top: 1px !important; padding-right: 1px !important; padding-bottom: 1px !important; padding-left: 1px !important; margin-top: 1em !important; margin-right: 0px !important; margin-bottom: 1em !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(231, 229, 220) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: relative !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 693px; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><div class="lines" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><div class="line alt1" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><code class="number" style="padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; ">01.</code><span class="content" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(255, 255, 255) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;"><span class="block" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://s1.wordpress.com/wp-content/plugins/syntaxhighlighter-wpcom/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background- text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;color:initial !important;"><code class="keyword" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 102, 153) !important; background-position: initial initial !important; ">class</code> <code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">Parent {</code></span></span></div><div class="line alt2" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><code class="number" style="padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; ">02.</code><span class="content" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(248, 248, 248) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;"><span class="block" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 35px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://s1.wordpress.com/wp-content/plugins/syntaxhighlighter-wpcom/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background- text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;color:initial !important;"><code class="keyword" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 102, 153) !important; background-position: initial initial !important; ">public</code> <code class="keyword" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 102, 153) !important; background-position: initial initial !important; ">string</code> <code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">val = </code><code class="string" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: blue !important; background-position: initial initial !important; ">"Parent"</code><code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">;</code></span></span></div><div class="line alt1" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><code class="number" style="padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; ">03.</code><span class="content" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(255, 255, 255) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;"><span class="block" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://s1.wordpress.com/wp-content/plugins/syntaxhighlighter-wpcom/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background- text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;color:initial !important;"> </span></span></div><div class="line alt2" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><code class="number" style="padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; ">04.</code><span class="content" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(248, 248, 248) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;"><span class="block" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 35px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://s1.wordpress.com/wp-content/plugins/syntaxhighlighter-wpcom/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background- text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;color:initial !important;"><code class="keyword" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 102, 153) !important; background-position: initial initial !important; ">public</code> <code class="keyword" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 102, 153) !important; background-position: initial initial !important; ">virtual</code> <code class="keyword" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 102, 153) !important; background-position: initial initial !important; ">void</code> <code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">GetValue() {</code></span></span></div><div class="line alt1" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><code class="number" style="padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; ">05.</code><span class="content" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(255, 255, 255) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;"><span class="block" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 84px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://s1.wordpress.com/wp-content/plugins/syntaxhighlighter-wpcom/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background- text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;color:initial !important;"><code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">Console.WriteLine(</code><code class="keyword" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 102, 153) !important; background-position: initial initial !important; ">this</code><code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">.val);</code></span></span></div><div class="line alt2" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><code class="number" style="padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; ">06.</code><span class="content" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(248, 248, 248) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;"><span class="block" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 35px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://s1.wordpress.com/wp-content/plugins/syntaxhighlighter-wpcom/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background- text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;color:initial !important;"><code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">}</code></span></span></div><div class="line alt1" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><code class="number" style="padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; ">07.</code><span class="content" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(255, 255, 255) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;"><span class="block" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://s1.wordpress.com/wp-content/plugins/syntaxhighlighter-wpcom/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background- text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;color:initial !important;"><code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">}</code></span></span></div><div class="line alt2" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><code class="number" style="padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; ">08.</code><span class="content" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(248, 248, 248) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;"><span class="block" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://s1.wordpress.com/wp-content/plugins/syntaxhighlighter-wpcom/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background- text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;color:initial !important;"> </span></span></div><div class="line alt1" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><code class="number" style="padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; ">09.</code><span class="content" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(255, 255, 255) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;"><span class="block" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://s1.wordpress.com/wp-content/plugins/syntaxhighlighter-wpcom/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background- text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;color:initial !important;"><code class="keyword" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 102, 153) !important; background-position: initial initial !important; ">class</code> <code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">Child:Parent {</code></span></span></div><div class="line alt2" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><code class="number" style="padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; ">10.</code><span class="content" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(248, 248, 248) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;"><span class="block" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 35px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://s1.wordpress.com/wp-content/plugins/syntaxhighlighter-wpcom/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background- text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;color:initial !important;"><code class="keyword" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 102, 153) !important; background-position: initial initial !important; ">public</code> <code class="keyword" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 102, 153) !important; background-position: initial initial !important; ">string</code> <code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">val = </code><code class="string" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: blue !important; background-position: initial initial !important; ">"Child"</code><code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">;</code></span></span></div><div class="line alt1" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><code class="number" style="padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; ">11.</code><span class="content" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(255, 255, 255) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;"><span class="block" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://s1.wordpress.com/wp-content/plugins/syntaxhighlighter-wpcom/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background- text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;color:initial !important;"> </span></span></div><div class="line alt2" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><code class="number" style="padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; ">12.</code><span class="content" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(248, 248, 248) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;"><span class="block" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 35px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://s1.wordpress.com/wp-content/plugins/syntaxhighlighter-wpcom/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background- text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;color:initial !important;"><code class="keyword" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 102, 153) !important; background-position: initial initial !important; ">public</code> <code class="keyword" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 102, 153) !important; background-position: initial initial !important; ">override</code> <code class="keyword" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 102, 153) !important; background-position: initial initial !important; ">void</code> <code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">GetValue() {</code></span></span></div><div class="line alt1" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><code class="number" style="padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; ">13.</code><span class="content" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(255, 255, 255) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;"><span class="block" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 63px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://s1.wordpress.com/wp-content/plugins/syntaxhighlighter-wpcom/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background- text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;color:initial !important;"><code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">Console.WriteLine(</code><code class="keyword" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 102, 153) !important; background-position: initial initial !important; ">this</code><code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">.val);</code></span></span></div><div class="line alt2" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><code class="number" style="padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; ">14.</code><span class="content" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(248, 248, 248) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;"><span class="block" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 35px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://s1.wordpress.com/wp-content/plugins/syntaxhighlighter-wpcom/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background- text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;color:initial !important;"><code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">}</code></span></span></div><div class="line alt1" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><code class="number" style="padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; ">15.</code><span class="content" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(255, 255, 255) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;"><span class="block" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://s1.wordpress.com/wp-content/plugins/syntaxhighlighter-wpcom/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background- text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;color:initial !important;"><code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">}</code></span></span></div></div></div><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; line-height: 18px; ">or use overridden public properties to access the <code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">val</code> value. This will work correctly as unlike public fields, public properties can be overridden.</p><div id="highlighter_44072" class="syntaxhighlighter " style="padding-top: 1px !important; padding-right: 1px !important; padding-bottom: 1px !important; padding-left: 1px !important; margin-top: 1em !important; margin-right: 0px !important; margin-bottom: 1em !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(231, 229, 220) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: relative !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 693px; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><div class="bar show" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: block !important; background-position: initial initial !important; "><div class="toolbar" style="padding-top: 8px !important; padding-right: 8px !important; padding-bottom: 8px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 1px !important; border-right-width: 1px !important; border-bottom-width: 1px !important; border-left-width: 1px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(248, 248, 248) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: absolute !important; left: auto !important; top: 0px !important; right: 0px !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1px !important; direction: ltr !important; border-top-color: rgb(231, 229, 220) !important; border-right-color: rgb(231, 229, 220) !important; border-bottom-color: rgb(231, 229, 220) !important; border-left-color: rgb(231, 229, 220) !important; border-top-style: solid !important; border-right-style: solid !important; border-bottom-style: solid !important; border-left-style: solid !important; background-position: initial initial !important; "><a href="http://dashasalo.wordpress.com/2009/06/28/php-and-c-oop-differences/#viewSource" title="view source" class="item viewSource" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 8px !important; color: rgb(160, 160, 160) !important; text-decoration: underline; display: block !important; float: left !important; background-repeat: no-repeat !important; overflow-x: hidden !important; overflow-y: hidden !important; text-indent: -5000px !important; background-image: url(http://s1.wordpress.com/wp-content/plugins/syntaxhighlighter-wpcom/page_white_code.png) !important; width: 16px; height: 16px; ">view source</a><div class="item copyToClipboard" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 8px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: block !important; overflow-x: visible !important; overflow-y: visible !important; text-indent: 0px !important; background-position: initial initial !important; "><embed width="16" height="16" id="highlighter_44072_clipboard" type="application/x-shockwave-flash" title="copy to clipboard" allowscriptaccess="always" wmode="transparent" flashvars="highlighterId=highlighter_44072" menu="false" src="http://s2.wordpress.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter/scripts/clipboard.swf" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "></embed></div><a href="http://dashasalo.wordpress.com/2009/06/28/php-and-c-oop-differences/#printSource" title="print" class="item printSource" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 8px !important; color: rgb(160, 160, 160) !important; text-decoration: underline; display: block !important; float: left !important; background-repeat: no-repeat !important; overflow-x: hidden !important; overflow-y: hidden !important; text-indent: -5000px !important; background-image: url(http://s1.wordpress.com/wp-content/plugins/syntaxhighlighter-wpcom/printer.png) !important; width: 16px; height: 16px; ">print</a><a href="http://dashasalo.wordpress.com/2009/06/28/php-and-c-oop-differences/#about" title="?" class="item about" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 8px !important; color: rgb(160, 160, 160) !important; text-decoration: underline; display: block !important; float: left !important; background-repeat: no-repeat !important; overflow-x: hidden !important; overflow-y: hidden !important; text-indent: -5000px !important; background-image: url(http://s1.wordpress.com/wp-content/plugins/syntaxhighlighter-wpcom/help.png) !important; width: 16px; height: 16px; ">?</a></div></div><div class="lines" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><div class="line alt1" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><code class="number" style="padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; ">01.</code><span class="content" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(255, 255, 255) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;"><span class="block" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://s1.wordpress.com/wp-content/plugins/syntaxhighlighter-wpcom/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background- text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;color:initial !important;"><code class="keyword" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 102, 153) !important; background-position: initial initial !important; ">class</code> <code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">Parent {</code></span></span></div><div class="line alt2" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><code class="number" style="padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; ">02.</code><span class="content" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(248, 248, 248) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;"><span class="block" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 28px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://s1.wordpress.com/wp-content/plugins/syntaxhighlighter-wpcom/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background- text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;color:initial !important;"><code class="keyword" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 102, 153) !important; background-position: initial initial !important; ">private</code> <code class="keyword" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 102, 153) !important; background-position: initial initial !important; ">string</code> <code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">privateVal = </code><code class="string" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: blue !important; background-position: initial initial !important; ">"Parent"</code><code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">;</code></span></span></div><div class="line alt1" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><code class="number" style="padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; ">03.</code><span class="content" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(255, 255, 255) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;"><span class="block" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 28px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://s1.wordpress.com/wp-content/plugins/syntaxhighlighter-wpcom/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background- text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;color:initial !important;"><code class="keyword" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 102, 153) !important; background-position: initial initial !important; ">public</code> <code class="keyword" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 102, 153) !important; background-position: initial initial !important; ">virtual</code> <code class="keyword" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 102, 153) !important; background-position: initial initial !important; ">string</code> <code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">val</code></span></span></div><div class="line alt2" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><code class="number" style="padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; ">04.</code><span class="content" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(248, 248, 248) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;"><span class="block" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 28px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://s1.wordpress.com/wp-content/plugins/syntaxhighlighter-wpcom/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background- text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;color:initial !important;"><code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">{</code></span></span></div><div class="line alt1" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><code class="number" style="padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; ">05.</code><span class="content" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(255, 255, 255) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;"><span class="block" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 56px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://s1.wordpress.com/wp-content/plugins/syntaxhighlighter-wpcom/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background- text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;color:initial !important;"><code class="keyword" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 102, 153) !important; background-position: initial initial !important; ">get</code> <code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">{ </code><code class="keyword" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 102, 153) !important; background-position: initial initial !important; ">return</code> <code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">privateVal; }</code></span></span></div><div class="line alt2" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><code class="number" style="padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; ">06.</code><span class="content" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(248, 248, 248) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;"><span class="block" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 28px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://s1.wordpress.com/wp-content/plugins/syntaxhighlighter-wpcom/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background- text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;color:initial !important;"><code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">}</code></span></span></div><div class="line alt1" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><code class="number" style="padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; ">07.</code><span class="content" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(255, 255, 255) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;"><span class="block" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://s1.wordpress.com/wp-content/plugins/syntaxhighlighter-wpcom/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background- text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;color:initial !important;"> </span></span></div><div class="line alt2" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><code class="number" style="padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; ">08.</code><span class="content" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(248, 248, 248) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;"><span class="block" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 28px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://s1.wordpress.com/wp-content/plugins/syntaxhighlighter-wpcom/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background- text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;color:initial !important;"><code class="keyword" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 102, 153) !important; background-position: initial initial !important; ">public</code> <code class="keyword" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 102, 153) !important; background-position: initial initial !important; ">void</code> <code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">GetValue()</code></span></span></div><div class="line alt1" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><code class="number" style="padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; ">09.</code><span class="content" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(255, 255, 255) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;"><span class="block" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 28px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://s1.wordpress.com/wp-content/plugins/syntaxhighlighter-wpcom/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background- text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;color:initial !important;"><code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">{</code></span></span></div><div class="line alt2" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><code class="number" style="padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; ">10.</code><span class="content" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(248, 248, 248) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;"><span class="block" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 56px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://s1.wordpress.com/wp-content/plugins/syntaxhighlighter-wpcom/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background- text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;color:initial !important;"><code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">Console.WriteLine(</code><code class="keyword" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 102, 153) !important; background-position: initial initial !important; ">this</code><code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">.val);</code></span></span></div><div class="line alt1" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><code class="number" style="padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; ">11.</code><span class="content" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(255, 255, 255) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;"><span class="block" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 28px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://s1.wordpress.com/wp-content/plugins/syntaxhighlighter-wpcom/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background- text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;color:initial !important;"><code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">}</code></span></span></div><div class="line alt2" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><code class="number" style="padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; ">12.</code><span class="content" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(248, 248, 248) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;"><span class="block" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://s1.wordpress.com/wp-content/plugins/syntaxhighlighter-wpcom/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background- text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;color:initial !important;"><code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">}</code></span></span></div><div class="line alt1" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><code class="number" style="padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; ">13.</code><span class="content" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(255, 255, 255) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;"><span class="block" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://s1.wordpress.com/wp-content/plugins/syntaxhighlighter-wpcom/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background- text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;color:initial !important;"> </span></span></div><div class="line alt2" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><code class="number" style="padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; ">14.</code><span class="content" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(248, 248, 248) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;"><span class="block" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://s1.wordpress.com/wp-content/plugins/syntaxhighlighter-wpcom/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background- text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;color:initial !important;"><code class="keyword" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 102, 153) !important; background-position: initial initial !important; ">class</code> <code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">Child : Parent {</code></span></span></div><div class="line alt1" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><code class="number" style="padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; ">15.</code><span class="content" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(255, 255, 255) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;"><span class="block" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 28px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://s1.wordpress.com/wp-content/plugins/syntaxhighlighter-wpcom/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background- text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;color:initial !important;"><code class="keyword" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 102, 153) !important; background-position: initial initial !important; ">private</code> <code class="keyword" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 102, 153) !important; background-position: initial initial !important; ">string</code> <code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">privateVal = </code><code class="string" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: blue !important; background-position: initial initial !important; ">"Child"</code><code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">;</code></span></span></div><div class="line alt2" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><code class="number" style="padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; ">16.</code><span class="content" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(248, 248, 248) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;"><span class="block" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 28px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://s1.wordpress.com/wp-content/plugins/syntaxhighlighter-wpcom/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background- text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;color:initial !important;"><code class="keyword" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 102, 153) !important; background-position: initial initial !important; ">public</code> <code class="keyword" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 102, 153) !important; background-position: initial initial !important; ">override</code> <code class="keyword" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 102, 153) !important; background-position: initial initial !important; ">string</code> <code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">val</code></span></span></div><div class="line alt1" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><code class="number" style="padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; ">17.</code><span class="content" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(255, 255, 255) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;"><span class="block" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 28px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://s1.wordpress.com/wp-content/plugins/syntaxhighlighter-wpcom/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background- text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;color:initial !important;"><code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">{</code></span></span></div><div class="line alt2" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><code class="number" style="padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; ">18.</code><span class="content" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(248, 248, 248) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;"><span class="block" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 56px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://s1.wordpress.com/wp-content/plugins/syntaxhighlighter-wpcom/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background- text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;color:initial !important;"><code class="keyword" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 102, 153) !important; background-position: initial initial !important; ">get</code> <code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">{ </code><code class="keyword" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 102, 153) !important; background-position: initial initial !important; ">return</code> <code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">privateVal; }</code></span></span></div><div class="line alt1" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><code class="number" style="padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; ">19.</code><span class="content" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(255, 255, 255) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;"><span class="block" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 28px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://s1.wordpress.com/wp-content/plugins/syntaxhighlighter-wpcom/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background- text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;color:initial !important;"><code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">}</code></span></span></div><div class="line alt2" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; background-position: initial initial !important; "><code class="number" style="padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; ">20.</code><span class="content" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(248, 248, 248) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;"><span class="block" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://s1.wordpress.com/wp-content/plugins/syntaxhighlighter-wpcom/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background- text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-weight: normal !important; font-style: normal !important; direction: ltr !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; font-family:Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;font-size:12px !important;color:initial !important;"><code class="plain" style="padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 12px !important; direction: ltr !important; display: inline !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; ">}</code></span></span></div></div></div><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; line-height: 18px; ">I couln’t find any “standard” behaviour for this case. So I guess it was up to C# and PHP teams how to implement this.</p><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; line-height: 18px; ">Original post can be found <a href="http://dashasalo.wordpress.com/2009/06/28/php-and-c-oop-differences/">here</a></p></span>Anonymoushttp://www.blogger.com/profile/17445191350548842437noreply@blogger.comtag:blogger.com,1999:blog-1002597578696693985.post-4739469482534462062009-09-21T16:41:00.000-07:002009-09-21T16:49:20.683-07:00Learn jQuery with FireBug, jQuerify and SelectorGadgetLearn how Dave Ward (@encosia) uses FireBug, jQuerify and SelectorGadget to learn jQuery and any other client-side technology. Hosted by Craig Shoemaker (@craigshoemaker) for the Polymorphic Podcast <a href="http://polymorphicpodcast.com/" target="_blank">http://polymorphicpodcast.com/</a><br /><br /><object height="344" width="425"><param name="movie" value="http://www.youtube.com/v/JB6MIV_lHI0&hl=en&fs=1&"><param name="allowFullScreen" value="true"><param name="allowscriptaccess" value="always"><embed src="http://www.youtube.com/v/JB6MIV_lHI0&hl=en&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="344" width="425"></embed></object>Anonymoushttp://www.blogger.com/profile/17445191350548842437noreply@blogger.comtag:blogger.com,1999:blog-1002597578696693985.post-91516609237346496962009-09-02T20:45:00.001-07:002009-09-02T20:45:43.111-07:00LINQ: Building an IQueryable Provider - Part III<p>This post is the third in a series of posts covering how to build a LINQ IQueryable provider. If you have not read the previous posts, please do so before proceeding. <p><a href="http://blogs.msdn.com/mattwar/pages/linq-links.aspx">Complete list of posts in the Building an IQueryable Provider series</a> <p>Part III? Wasn’t I done in the last post? Didn’t I have the provider actually working, translating, executing and returning a sequence of objects? <p>Sure, that’s true, but only just so. The provider I built was really fragile. It only understood one major query operator and a few minor ones like comparison, etc. However, real providers are going to have to deal with many more operators and complicated interactions between them. For example, that provider did not even let you project the data into new shapes. How one goes about doing that is non-obvious. <p><b>Translating Local Variable References</b><pre class="code"><span style="color: blue">string </span>city = <span style="color: #a31515">"London"</span>;<br />var query = db.Customers.Where(c => c.City == city);</pre><br /><p>What happens when we try to translate that? Go ahead try it. I’m waiting. <br /><p>Bam! You get an exception, “The member 'city' is not supported.” What does that mean? I thought the ‘member’ city was one of the columns. Well, it is. What the exception is referring to is the local variable ‘city’. Yet, how is that a ‘member’? <br /><p>Take a look at the ToString() translation of the expression tree.<pre class="code"><span style="color: #2b91af">Console</span>.WriteLine(query.Expression.ToString());</pre><br /><p><a href="http://11011.net/software/vspaste"></a>Here’s what you get: SELECT * FROM Customers.Where(c => return (c.City = value(Sample.Program+<>c__DisplayClass0).city)) </p><br /><p>Aha! The c# compile has made a class to hold local variables that are being referenced in the lambda expression. This is the same thing it does when local variables are referenced inside an anonymous method. But you already knew that. Didn’t you? No? Regardless, if I want to have my provider work with references to local variables I’m going to have to deal with it. Maybe I can just recognize field references to these compiler generated types? How do I identify a compiler generated type? By name? What if the c# compiler changes how they name them? What if another language uses a different scheme? Are local variables the only interesting case? What about references to member variables in scope at the time? Those aren’t going to be encoded as values in the tree either are they? At best they will be a constant node referencing the instance the member is on and then a MemberAccess node that accesses the member off that instance. Can I just recognize any member access against a constant node and evaluated it by hand using reflection? Maybe. What if the compiler generates something more complicated? Okay, what I’m going to give you is a general purpose solution that will turn these compiler generated trees into something much more palatable, more like the trees you thought you were getting before I pointed out this mess. What I really want to do is identify sub-trees in the overall tree that can be immediately evaluated and turned into values. If I can do this, then the rest of the translator only needs to deal with these values. Thank goodness I already have the ExpressionVisitor defined. I can use that and invent a pretty simple rule to determine what is sub-tree that can be evaluated locally. Take a look at the code first and then I’ll explain how it does what it does.</p><pre class="code"><span style="color: blue">public static class </span><span style="color: #2b91af">Evaluator<br /> </span>{<br /> <span style="color: gray">/// <summary><br /> /// </span><span style="color: green">Performs evaluation & replacement of independent sub-trees<br /> </span><span style="color: gray">/// </summary><br /> /// <param name="expression"></span><span style="color: green">The root of the expression tree.</span><span style="color: gray"></param><br /> /// <param name="fnCanBeEvaluated"></span><span style="color: green">A function that decides whether a given expression node can be part of the local function.</span><span style="color: gray"></param><br /> /// <returns></span><span style="color: green">A new tree with sub-trees evaluated and replaced.</span><span style="color: gray"></returns><br /> </span><span style="color: blue">public static </span>Expression PartialEval(Expression expression, <span style="color: #2b91af">Func</span><Expression, <span style="color: blue">bool</span>> fnCanBeEvaluated)<br /> {<br /> <span style="color: blue">return new </span><span style="color: #2b91af">SubtreeEvaluator</span>(<span style="color: blue">new </span><span style="color: #2b91af">Nominator</span>(fnCanBeEvaluated).Nominate(expression)).Eval(expression);<br /> }<br /> <span style="color: gray">/// <summary><br /> /// </span><span style="color: green">Performs evaluation & replacement of independent sub-trees<br /> </span><span style="color: gray">/// </summary><br /> /// <param name="expression"></span><span style="color: green">The root of the expression tree.</span><span style="color: gray"></param><br /> /// <returns></span><span style="color: green">A new tree with sub-trees evaluated and replaced.</span><span style="color: gray"></returns><br /> </span><span style="color: blue">public static </span>Expression PartialEval(Expression expression)<br /> {<br /> <span style="color: blue">return </span>PartialEval(expression, <span style="color: #2b91af">Evaluator</span>.CanBeEvaluatedLocally);<br /> }<br /><br /> <span style="color: blue">private static bool </span>CanBeEvaluatedLocally(Expression expression)<br /> {<br /> <span style="color: blue">return </span>expression.NodeType != ExpressionType.Parameter;<br /> }<br /><br /> <span style="color: gray">/// <summary><br /> /// </span><span style="color: green">Evaluates & replaces sub-trees when first candidate is reached (top-down)<br /> </span><span style="color: gray">/// </summary><br /> </span><span style="color: blue">class </span><span style="color: #2b91af">SubtreeEvaluator </span>: ExpressionVisitor<br /> {<br /> <span style="color: #2b91af">HashSet</span><Expression> candidates;<br /> <span style="color: blue">internal </span>SubtreeEvaluator(<span style="color: #2b91af">HashSet</span><Expression> candidates)<br /> {<br /> <span style="color: blue">this</span>.candidates = candidates;<br /> }<br /><br /> <span style="color: blue">internal </span>Expression Eval(Expression exp)<br /> {<br /> <span style="color: blue">return this</span>.Visit(exp);<br /> }<br /><br /> <span style="color: blue">protected override </span>Expression Visit(Expression exp)<br /> {<br /> <span style="color: blue">if </span>(exp == <span style="color: blue">null</span>)<br /> {<br /> <span style="color: blue">return null</span>;<br /> }<br /> <span style="color: blue">if </span>(<span style="color: blue">this</span>.candidates.Contains(exp))<br /> {<br /> <span style="color: blue">return this</span>.Evaluate(exp);<br /> }<br /> <span style="color: blue">return base</span>.Visit(exp);<br /> }<br /><br /> <span style="color: blue">private </span>Expression Evaluate(Expression e)<br /> {<br /> <span style="color: blue">if </span>(e.NodeType == ExpressionType.Constant)<br /> {<br /> <span style="color: blue">return </span>e;<br /> }<br /> LambdaExpression lambda = Expression.Lambda(e);<br /> <span style="color: #2b91af">Delegate </span>fn = lambda.Compile();<br /> <span style="color: blue">return </span>Expression.Constant(fn.DynamicInvoke(<span style="color: blue">null</span>), e.Type);<br /> }<br /> }<br /><br /> <span style="color: gray">/// <summary><br /> /// </span><span style="color: green">Performs bottom-up analysis to determine which nodes can possibly<br /> </span><span style="color: gray">/// </span><span style="color: green">be part of an evaluated sub-tree.<br /> </span><span style="color: gray">/// </summary><br /> </span><span style="color: blue">class </span><span style="color: #2b91af">Nominator </span>: ExpressionVisitor<br /> {<br /> <span style="color: #2b91af">Func</span><Expression, <span style="color: blue">bool</span>> fnCanBeEvaluated;<br /> <span style="color: #2b91af">HashSet</span><Expression> candidates;<br /> <span style="color: blue">bool </span>cannotBeEvaluated;<br /><br /> <span style="color: blue">internal </span>Nominator(<span style="color: #2b91af">Func</span><Expression, <span style="color: blue">bool</span>> fnCanBeEvaluated)<br /> {<br /> <span style="color: blue">this</span>.fnCanBeEvaluated = fnCanBeEvaluated;<br /> }<br /><br /> <span style="color: blue">internal </span><span style="color: #2b91af">HashSet</span><Expression> Nominate(Expression expression)<br /> {<br /> <span style="color: blue">this</span>.candidates = <span style="color: blue">new </span><span style="color: #2b91af">HashSet</span><Expression>();<br /> <span style="color: blue">this</span>.Visit(expression);<br /> <span style="color: blue">return this</span>.candidates;<br /> }<br /><br /> <span style="color: blue">protected override </span>Expression Visit(Expression expression)<br /> {<br /> <span style="color: blue">if </span>(expression != <span style="color: blue">null</span>)<br /> {<br /> <span style="color: blue">bool </span>saveCannotBeEvaluated = <span style="color: blue">this</span>.cannotBeEvaluated;<br /> <span style="color: blue">this</span>.cannotBeEvaluated = <span style="color: blue">false</span>;<br /> <span style="color: blue">base</span>.Visit(expression);<br /> <span style="color: blue">if </span>(!<span style="color: blue">this</span>.cannotBeEvaluated)<br /> {<br /> <span style="color: blue">if </span>(<span style="color: blue">this</span>.fnCanBeEvaluated(expression))<br /> {<br /> <span style="color: blue">this</span>.candidates.Add(expression);<br /> }<br /> <span style="color: blue">else<br /> </span>{<br /> <span style="color: blue">this</span>.cannotBeEvaluated = <span style="color: blue">true</span>;<br /> }<br /> }<br /> <span style="color: blue">this</span>.cannotBeEvaluated |= saveCannotBeEvaluated;<br /> }<br /> <span style="color: blue">return </span>expression;<br /> }<br /> }<br /> }</pre><br /><p>The Evaluator class exposes a static method ‘PartialEval’ that you can call to evaluate these sub-trees in your expression, leaving only constant nodes with actual values in their place.<br /><p>The majority of this code is the demarking of maximal sub-trees that can be evaluated in isolation. The actual evaluation is trivial since the sub-trees can be ‘compiled’ using LambaExpression.Compile, turned into a delegate and then invoked. You can see this happening in the SubtreeVisitor.Evaluate method.<br /><p>The process of determining maximal sub-trees happens in two steps. First by a bottom-up walk in the Nominator class that determines which nodes could possibly be evaluated in isolation and then a top-down walk in SubtreeEvaluator that finds highest nodes representing sub-trees that were nominated.<br /><p>The Nominator is parameterized by a function that you supply that can employ whatever heuristics you want to determine if some given node can be evaluated in isolation. The default heuristic is that any node except ExpresssionType.Parameter can be evaluated in isolation. Beyond that, a general rule states that if a child node cannot be evaluated locally then the parent node cannot either. Therefore, any node upstream of a parameter cannot be evaluated and will remain in the tree. Everything else will be evaluated and replaced as constants.<br /><p>Now that I have this class I can put it to work by using it whenever I go about translating expression trees. Fortunately, I already have this operation factored out into the ‘Translate’ method on the DbQueryProvider class.<pre class="code"><span style="color: blue">public class </span><span style="color: #2b91af">DbQueryProvider </span>: QueryProvider {<br /> <span style="color: blue">private string </span>Translate(Expression expression) {<br /> expression = Evaluator.PartialEval(expression);<br /> <span style="color: blue">return new </span>QueryTranslator().Translate(expression);</pre><pre class="code">}</pre><pre class="code"><font face="Courier New">}</font></pre><pre class="code">Now if we try the following code we get a better result:</pre><pre class="code"><span style="color: blue">string </span>city = <span style="color: #a31515">"London"</span>;<br />var query = db.Customers.Where(c => c.City == city);<br /><span style="color: #2b91af">Console</span>.WriteLine(<span style="color: #a31515">"Query:\n{0}\n"</span>, query);<br /></pre><br /><p>Which writes:<br /><p>Query:<br>SELECT * FROM (SELECT * FROM Customers) AS T WHERE (City = 'London')<br /><p>Exactly what I wanted. This provider is coming along nicely!<br /><p>Maybe next time I’ll implement Select. J<br /><p>Original post can be found <a href="http://blogs.msdn.com/mattwar/archive/2007/08/01/linq-building-an-iqueryable-provider-part-iii.aspx" target="_blank">here</a></p> Anonymoushttp://www.blogger.com/profile/17445191350548842437noreply@blogger.comtag:blogger.com,1999:blog-1002597578696693985.post-52786805492870732542009-09-01T19:13:00.001-07:002009-09-02T20:46:34.850-07:00LINQ: Building an IQueryable Provider - Part II<p>This is the second post in a multi-post series on building LINQ providers using the IQueryable interface. If you are new to this series please read the following post before proceeding. <p><a href="http://blogs.msdn.com/mattwar/pages/linq-links.aspx">Complete list of posts in the Building an IQueryable Provider series</a> <p>Now, that I’ve laid the groundwork defining a reusable version of IQueryable and IQueryProvider, namely Query<T> and QueryProvider, I’m going to build a provider that actually does something. As I said before, what a query provider really does is execute a little bit of ‘code’ defined as an expression tree instead of actual IL. Of course, it does not actually have to execute it in the traditional sense. For example, LINQ to SQL translates the query expression into SQL and sends it to the server to execute it. <p>My sample below is going to work much like LINQ to SQL in that it translates and executes a query against an ADO provider. However, I must add a disclaimer here, this sample is not a full-fledge provider in any sense. I’m only going to handle translating the ‘Where’ operation and I’m not even going to attempt to do anything more complicated than allow the predicate to contain a field reference and few simple operators. I may expand on this provider in the future, but for now it is mostly for illustrative purposes only. Please don’t cut and paste and expect to have ship-quality code. <p>The provider is going to basically do two things; 1) translate the query into a SQL command text and 2) translate the result of executing the command into objects. <p><b>The Query Translator</b> <p>The query translator is going to simply visit each node in the query’s expression tree and translate the supported operations into text using a StringBuilder. For the sake of clarity assume there is a class called ExpressionVisitor that defines the base visitor pattern for Expression nodes. (I promise I’ll actually include the code for this at the end of the post but for now bear with me.)<pre class="code"><span style="color: blue">internal class </span><span style="color: #2b91af">QueryTranslator </span>: ExpressionVisitor<br />{<br /> StringBuilder sb;<br /> <span style="color: blue">internal </span>QueryTranslator()<br /> {<br /> }<br /> <span style="color: blue">internal string </span>Translate(Expression expression)<br /> {<br /> <span style="color: blue">this</span>.sb = <span style="color: blue">new </span>StringBuilder();<br /> <span style="color: blue">this</span>.Visit(expression);<br /> <span style="color: blue">return this</span>.sb.ToString();<br /> }<br /><br /> <span style="color: blue">private static </span>Expression StripQuotes(Expression e)<br /> {<br /> <span style="color: blue">while </span>(e.NodeType == ExpressionType.Quote)<br /> {<br /> e = ((UnaryExpression)e).Operand;<br /> }<br /> <span style="color: blue">return </span>e;<br /> }<br /><br /> <span style="color: blue">protected override </span>Expression VisitMethodCall(MethodCallExpression m)<br /> {<br /> <span style="color: blue">if </span>(m.Method.DeclaringType == <span style="color: blue">typeof</span>(Queryable) && m.Method.Name == <span style="color: #a31515">"Where"</span>)<br /> {<br /> sb.Append(<span style="color: #a31515">"SELECT * FROM ("</span>);<br /> <span style="color: blue">this</span>.Visit(m.Arguments[0]);<br /> sb.Append(<span style="color: #a31515">") AS T WHERE "</span>);<br /> LambdaExpression lambda = (LambdaExpression)StripQuotes(m.Arguments[1]);<br /> <span style="color: blue">this</span>.Visit(lambda.Body);<br /> <span style="color: blue">return </span>m;<br /> }<br /> <span style="color: blue">throw new </span>NotSupportedException(<span style="color: blue">string</span>.Format(<span style="color: #a31515">"The method '{0}' is not supported"</span>, m.Method.Name));<br /> }<br /><br /> <span style="color: blue">protected override </span>Expression VisitUnary(UnaryExpression u)<br /> {<br /> <span style="color: blue">switch </span>(u.NodeType)<br /> {<br /> <span style="color: blue">case </span>ExpressionType.Not:<br /> sb.Append(<span style="color: #a31515">" NOT "</span>);<br /> <span style="color: blue">this</span>.Visit(u.Operand);<br /> <span style="color: blue">break</span>;<br /> <span style="color: blue">default</span>:<br /> <span style="color: blue">throw new </span>NotSupportedException(<span style="color: blue">string</span>.Format(<span style="color: #a31515">"The unary operator '{0}' is not supported"</span>, u.NodeType));<br /> }<br /> <span style="color: blue">return </span>u;<br /> }<br /><br /> <span style="color: blue">protected override </span>Expression VisitBinary(BinaryExpression b)<br /> {<br /> sb.Append(<span style="color: #a31515">"("</span>);<br /> <span style="color: blue">this</span>.Visit(b.Left);<br /> <span style="color: blue">switch </span>(b.NodeType)<br /> {<br /> <span style="color: blue">case </span>ExpressionType.And:<br /> sb.Append(<span style="color: #a31515">" AND "</span>);<br /> <span style="color: blue">break</span>;<br /> <span style="color: blue">case </span>ExpressionType.Or:<br /> sb.Append(<span style="color: #a31515">" OR"</span>);<br /> <span style="color: blue">break</span>;<br /> <span style="color: blue">case </span>ExpressionType.Equal:<br /> sb.Append(<span style="color: #a31515">" = "</span>);<br /> <span style="color: blue">break</span>;<br /> <span style="color: blue">case </span>ExpressionType.NotEqual:<br /> sb.Append(<span style="color: #a31515">" <> "</span>);<br /> <span style="color: blue">break</span>;<br /> <span style="color: blue">case </span>ExpressionType.LessThan:<br /> sb.Append(<span style="color: #a31515">" < "</span>);<br /> <span style="color: blue">break</span>;<br /> <span style="color: blue">case </span>ExpressionType.LessThanOrEqual:<br /> sb.Append(<span style="color: #a31515">" <= "</span>);<br /> <span style="color: blue">break</span>;<br /> <span style="color: blue">case </span>ExpressionType.GreaterThan:<br /> sb.Append(<span style="color: #a31515">" > "</span>);<br /> <span style="color: blue">break</span>;<br /> <span style="color: blue">case </span>ExpressionType.GreaterThanOrEqual:<br /> sb.Append(<span style="color: #a31515">" >= "</span>);<br /> <span style="color: blue">break</span>;<br /> <span style="color: blue">default</span>:<br /> <span style="color: blue">throw new </span>NotSupportedException(<span style="color: blue">string</span>.Format(<span style="color: #a31515">"The binary operator '{0}' is not supported"</span>, b.NodeType));<br /> }<br /> <span style="color: blue">this</span>.Visit(b.Right);<br /> sb.Append(<span style="color: #a31515">")"</span>);<br /> <span style="color: blue">return </span>b;<br /> }<br /><br /> <span style="color: blue">protected override </span>Expression VisitConstant(ConstantExpression c)<br /> {<br /> IQueryable q = c.Value <span style="color: blue">as </span>IQueryable;<br /> <span style="color: blue">if </span>(q != <span style="color: blue">null</span>)<br /> {<br /> <span style="color: green">// assume constant nodes w/ IQueryables are table references<br /> </span>sb.Append(<span style="color: #a31515">"SELECT * FROM "</span>);<br /> sb.Append(q.ElementType.Name);<br /> }<br /> <span style="color: blue">else if </span>(c.Value == <span style="color: blue">null</span>)<br /> {<br /> sb.Append(<span style="color: #a31515">"NULL"</span>);<br /> }<br /> <span style="color: blue">else<br /> </span>{<br /> <span style="color: blue">switch </span>(Type.GetTypeCode(c.Value.GetType()))<br /> {<br /> <span style="color: blue">case </span>TypeCode.Boolean:<br /> sb.Append(((<span style="color: blue">bool</span>)c.Value) ? 1 : 0);<br /> <span style="color: blue">break</span>;<br /> <span style="color: blue">case </span>TypeCode.String:<br /> sb.Append(<span style="color: #a31515">"'"</span>);<br /> sb.Append(c.Value);<br /> sb.Append(<span style="color: #a31515">"'"</span>);<br /> <span style="color: blue">break</span>;<br /> <span style="color: blue">case </span>TypeCode.Object:<br /> <span style="color: blue">throw new </span>NotSupportedException(<span style="color: blue">string</span>.Format(<span style="color: #a31515">"The constant for '{0}' is not supported"</span>, c.Value));<br /> <span style="color: blue">default</span>:<br /> sb.Append(c.Value);<br /> <span style="color: blue">break</span>;<br /> }<br /> }<br /> <span style="color: blue">return </span>c;<br /> }<br /><br /> <span style="color: blue">protected override </span>Expression VisitMemberAccess(MemberExpression m)<br /> {<br /> <span style="color: blue">if </span>(m.Expression != <span style="color: blue">null </span>&& m.Expression.NodeType == ExpressionType.Parameter)<br /> {<br /> sb.Append(m.Member.Name);<br /> <span style="color: blue">return </span>m;<br /> }<br /> <span style="color: blue">throw new </span>NotSupportedException(<span style="color: blue">string</span>.Format(<span style="color: #a31515">"The member '{0}' is not supported"</span>, m.Member.Name));<br /> }<br />}</pre><a href="http://11011.net/software/vspaste"></a><br /><p>As you can see, there’s not much there and still it is rather complicated. What I’m expecting to see in the expression tree is at most a method call node with arguments referring to the source (argument 0) and the predicate (argument 1). Take a look at the VisitMethodCall method above. I explicitly handle the case of the Queryable.Where method, generating a “SELECT * FROM (“, recursively visiting the source and then appending “) AS T WHERE “, and then visiting the predicate. This allows for other query operators present in the source expression to be nested sub-queries. I don’t handle any other operators, but if more than one call to Where is used then I’m able to deal with that gracefully. It doesn’t matter what the table alias is that is used (I picked ‘T’) since I’m not going to generate references to it anyway. A more full-fledged provider would of course want to do this. <br /><p>There’s a little helper method included called StripQutotes. Its job is to strip away any ExpressionType.Quote nodes on the method arguments (which may happen) so I can get at the pure lambda expression that I’m looking for. <br /><p>The VisitUnary and VisitBinary methods are straightforward. They simply inject the correct text for the specific unary and binary operators I’ve chosen to support. The interesting bit of translation comes in the VisitConstant method. You see, table references in my world are just the root IQueryable’s. If a constant node holds one of my Query<T> instances then I’ll just assume it’s meant to represent the root table so I’ll append “SELECT * FROM” and then the name of the table which is simply the name of the element type of the query. The rest of the translation for constant nodes just deals with actual constants. Note these constants are added to the command text as literal values. There is nothing here to stop injection attacks that real providers need to deal with. <br /><p>Finally, VisitMemberAccess assumes that all field or property accesses are meant to be column references in the command text. No checking is done to prove that this is true. The name of the field or property is assumed to match the name of the column in the database. <br /><p>Given a class ‘Customers’ with fields matching the names of the columns in the Northwind sample database, this query translator will generate queries that look like this: <br /><p>For the query:<pre class="code">Query<Customers> customers = ...;<br /> IQueryable<Customers> q = customers.Where(c => c.City == <span style="color: #a31515">"London"</span>);<br /><br /> è<br /><br />“SELECT * FROM (SELECT *FROM Customers) AS T WHERE (city = ‘London’)”</pre><a href="http://11011.net/software/vspaste"></a><br /><p><b>The Object Reader</b> <br /><p>The job of the object reader is to turn the results of a SQL query into objects. I’m going to build a simple class that takes a DbDataReader and a type ‘T’ and I’ll make it implement IEnumerable<T>. There are no bells and whistles in this implementation. It will only work for writing into class fields via reflection. The names of the fields must match the names of the columns in the reader and the types must match whatever the DataReader thinks is the correct type.<pre class="code"><span style="color: blue">internal class </span><span style="color: #2b91af">ObjectReader</span><T> : IEnumerable<T>, IEnumerable <span style="color: blue">where </span>T : <span style="color: blue">class</span>, <span style="color: blue">new</span>()<br />{<br /> <span style="color: #2b91af">Enumerator </span>enumerator;<br /> <span style="color: blue">internal </span>ObjectReader(DbDataReader reader)<br /> {<br /> <span style="color: blue">this</span>.enumerator = <span style="color: blue">new </span><span style="color: #2b91af">Enumerator</span>(reader);<br /> }<br /><br /> <span style="color: blue">public </span>IEnumerator<T> GetEnumerator()<br /> {<br /> <span style="color: #2b91af">Enumerator </span>e = <span style="color: blue">this</span>.enumerator;<br /> <span style="color: blue">if </span>(e == <span style="color: blue">null</span>)<br /> {<br /> <span style="color: blue">throw new </span>InvalidOperationException(<span style="color: #a31515">"Cannot enumerate more than once"</span>);<br /> }<br /> <span style="color: blue">this</span>.enumerator = <span style="color: blue">null</span>;<br /> <span style="color: blue">return </span>e;<br /> }<br /><br /> IEnumerator IEnumerable.GetEnumerator()<br /> {<br /> <span style="color: blue">return this</span>.GetEnumerator();<br /> }<br /><br /> <span style="color: blue">class </span><span style="color: #2b91af">Enumerator </span>: IEnumerator<T>, IEnumerator, IDisposable<br /> {<br /> DbDataReader reader;<br /> FieldInfo[] fields;<br /> <span style="color: blue">int</span>[] fieldLookup;<br /> T current;<br /><br /> <span style="color: blue">internal </span>Enumerator(DbDataReader reader)<br /> {<br /> <span style="color: blue">this</span>.reader = reader;<br /> <span style="color: blue">this</span>.fields = <span style="color: blue">typeof</span>(T).GetFields();<br /> }<br /><br /> <span style="color: blue">public </span>T Current<br /> {<br /> <span style="color: blue">get </span>{ <span style="color: blue">return this</span>.current; }<br /> }<br /><br /> <span style="color: blue">object </span>IEnumerator.Current<br /> {<br /> <span style="color: blue">get </span>{ <span style="color: blue">return this</span>.current; }<br /> }<br /><br /> <span style="color: blue">public bool </span>MoveNext()<br /> {<br /> <span style="color: blue">if </span>(<span style="color: blue">this</span>.reader.Read())<br /> {<br /> <span style="color: blue">if </span>(<span style="color: blue">this</span>.fieldLookup == <span style="color: blue">null</span>)<br /> {<br /> <span style="color: blue">this</span>.InitFieldLookup();<br /> }<br /> T instance = <span style="color: blue">new </span>T();<br /> <span style="color: blue">for </span>(<span style="color: blue">int </span>i = 0, n = <span style="color: blue">this</span>.fields.Length; i < n; i++)<br /> {<br /> <span style="color: blue">int </span>index = <span style="color: blue">this</span>.fieldLookup[i];<br /> <span style="color: blue">if </span>(index >= 0)<br /> {<br /> FieldInfo fi = <span style="color: blue">this</span>.fields[i];<br /> <span style="color: blue">if </span>(<span style="color: blue">this</span>.reader.IsDBNull(index))<br /> {<br /> fi.SetValue(instance, <span style="color: blue">null</span>);<br /> }<br /> <span style="color: blue">else<br /> </span>{<br /> fi.SetValue(instance, <span style="color: blue">this</span>.reader.GetValue(index));<br /> }<br /> }<br /> }<br /><br /> <span style="color: blue">this</span>.current = instance;<br /> <span style="color: blue">return true</span>;<br /> }<br /> <span style="color: blue">return false</span>;<br /> }<br /><br /> <span style="color: blue">public void </span>Reset()<br /> {<br /> }<br /><br /> <span style="color: blue">public void </span>Dispose()<br /> {<br /> <span style="color: blue">this</span>.reader.Dispose();<br /> }<br /><br /> <span style="color: blue">private void </span>InitFieldLookup()<br /> {<br /> Dictionary<<span style="color: blue">string</span>, <span style="color: blue">int</span>> map = <span style="color: blue">new </span>Dictionary<<span style="color: blue">string</span>, <span style="color: blue">int</span>>(StringComparer.InvariantCultureIgnoreCase);<br /> <span style="color: blue">for </span>(<span style="color: blue">int </span>i = 0, n = <span style="color: blue">this</span>.reader.FieldCount; i < n; i++)<br /> {<br /> map.Add(<span style="color: blue">this</span>.reader.GetName(i), i);<br /> }<br /> <span style="color: blue">this</span>.fieldLookup = <span style="color: blue">new int</span>[<span style="color: blue">this</span>.fields.Length];<br /> <span style="color: blue">for </span>(<span style="color: blue">int </span>i = 0, n = <span style="color: blue">this</span>.fields.Length; i < n; i++)<br /> {<br /> <span style="color: blue">int </span>index;<br /> <span style="color: blue">if </span>(map.TryGetValue(<span style="color: blue">this</span>.fields[i].Name, <span style="color: blue">out </span>index))<br /> {<br /> <span style="color: blue">this</span>.fieldLookup[i] = index;<br /> }<br /> <span style="color: blue">else<br /> </span>{<br /> <span style="color: blue">this</span>.fieldLookup[i] = -1;<br /> }<br /> }<br /> }<br /> }<br />}</pre><a href="http://11011.net/software/vspaste"></a><br /><p>The ObjectReader creates a new instance of type ‘T’ for each row read by the DbDataReader. It uses the reflection API FieldInfo.SetValue to assign values to each field of the object. When the ObjectReader is first created it instantiates an instance of the nested Enumerator class. This enumerator is handed out when the GetEnumerator method is called. Since DataReader’s cannot reset and execute again, the enumerator can only be handed out once. If GetEnumerator is called a second time an exception is thrown. <br /><p>The ObjectReader is lenient in the ordering of fields. Since the QueryTranslator builds queries using “SELECT *” this is a must because otherwise the code has no way of knowing which column will appear first in the results. Note that it is generally inadvisable to use “SELECT *” in production code. Remember this is just an illustrative sample to show how in general to put together a LINQ provider. In order to allow for different sequences of columns, the precise sequence is discovered at runtime when the first row is read for the DataReader. The InitFieldLookup function builds a map from column name to column ordinal and then assembles a lookup table ‘fieldLookup’ that maps between the object’s fields and the ordinals. <br /><p><b>The Provider</b> <br /><p>Now that we have these two pieces (and the classes define in the prior post) it’s quite easy to combine them together to make an actual IQueryable LINQ provider.<pre class="code"><span style="color: blue">public class </span><span style="color: #2b91af">DbQueryProvider </span>: QueryProvider<br />{<br /><br /> DbConnection connection;<br /><br /> <span style="color: blue">public </span>DbQueryProvider(DbConnection connection)<br /> {<br /> <span style="color: blue">this</span>.connection = connection;<br /> }<br /><br /> <span style="color: blue">public override string </span>GetQueryText(Expression expression)<br /> {<br /> <span style="color: blue">return this</span>.Translate(expression);<br /> }<br /><br /> <span style="color: blue">public override object </span>Execute(Expression expression)<br /> {<br /> DbCommand cmd = <span style="color: blue">this</span>.connection.CreateCommand();<br /> cmd.CommandText = <span style="color: blue">this</span>.Translate(expression);<br /> DbDataReader reader = cmd.ExecuteReader();<br /> Type elementType = TypeSystem.GetElementType(expression.Type);<br /> <span style="color: blue">return </span>Activator.CreateInstance(<br /> <span style="color: blue">typeof</span>(ObjectReader<>).MakeGenericType(elementType),<br /> BindingFlags.Instance | BindingFlags.NonPublic, <span style="color: blue">null</span>,<br /> <span style="color: blue">new object</span>[] { reader },<br /> <span style="color: blue">null</span>);<br /> }<br /><br /> <span style="color: blue">private string </span>Translate(Expression expression)<br /> {<br /> <span style="color: blue">return new </span>QueryTranslator().Translate(expression);<br /> }<br />}</pre><a href="http://11011.net/software/vspaste"></a><br /><p>As you can see, building a provider is now simply an exercise in combining these two pieces. The GetQueryText just needs to use the QueryTranslator to produce the command text. The Execute method uses both QueryTranslator and ObjectReader to build a DbCommand object, execute it and return the results as an IEnumerable. <br /><p><b>Trying it Out</b> <br /><p>Now that we have our provider we can try it out. Since I’m basically following the LINQ to SQL model I’ll define a class for the Customers table, a ‘Context’ that holds onto the tables (root queries) and a little program that uses them.<pre class="code"><span style="color: blue">public class </span><span style="color: #2b91af">Customers<br /></span>{<br /> <span style="color: blue">public string </span>CustomerID;<br /> <span style="color: blue">public string </span>ContactName;<br /> <span style="color: blue">public string </span>Phone;<br /> <span style="color: blue">public string </span>City;<br /> <span style="color: blue">public string </span>Country;<br />}<br /><br /><span style="color: blue">public class </span><span style="color: #2b91af">Orders<br /></span>{<br /> <span style="color: blue">public int </span>OrderID;<br /> <span style="color: blue">public string </span>CustomerID;<br /> <span style="color: blue">public </span>DateTime OrderDate;<br />}<br /><br /><span style="color: blue">public class </span><span style="color: #2b91af">Northwind<br /></span>{<br /> <span style="color: blue">public </span>Query<<span style="color: #2b91af">Customers</span>> Customers;<br /> <span style="color: blue">public </span>Query<<span style="color: #2b91af">Orders</span>> Orders;<br /><br /> <span style="color: blue">public </span>Northwind(DbConnection connection)<br /> {<br /> QueryProvider provider = <span style="color: blue">new </span>DbQueryProvider(connection);<br /> <span style="color: blue">this</span>.Customers = <span style="color: blue">new </span>Query<<span style="color: #2b91af">Customers</span>>(provider);<br /> <span style="color: blue">this</span>.Orders = <span style="color: blue">new </span>Query<<span style="color: #2b91af">Orders</span>>(provider);<br /> }<br />}<br /><br /><span style="color: blue">class </span><span style="color: #2b91af">Program<br /></span>{<br /> <span style="color: blue">static void </span>Main(<span style="color: blue">string</span>[] args)<br /> {<br /> <span style="color: blue">string </span>constr = <span style="color: #a31515">@"…"</span>;<br /> <span style="color: blue">using </span>(SqlConnection con = <span style="color: blue">new </span>SqlConnection(constr))<br /> {<br /> con.Open();<br /> <span style="color: #2b91af">Northwind </span>db = <span style="color: blue">new </span><span style="color: #2b91af">Northwind</span>(con);<br /> IQueryable<<span style="color: #2b91af">Customers</span>> query =<br /> db.Customers.Where(c => c.City == <span style="color: #a31515">"London"</span>);<br /><br /> Console.WriteLine(<span style="color: #a31515">"Query:\n{0}\n"</span>, query);<br /> <span style="color: blue">var </span>list = query.ToList();<br /> <span style="color: blue">foreach </span>(<span style="color: blue">var </span>item <span style="color: blue">in </span>list)<br /> {<br /> Console.WriteLine(<span style="color: #a31515">"Name: {0}"</span>, item.ContactName);<br /> }<br /><br /> Console.ReadLine();<br /> }<br /> }<br />}</pre><br /><p><a href="http://11011.net/software/vspaste"></a>Now if we run this we should get the following output: (Note that you will have to add your own connection string to the program above.)</p><br /><p>Query:<br>SELECT * FROM (SELECT * FROM Customers) AS T WHERE (City = 'London')<br>Name: Thomas Hardy<br>Name: Victoria Ashworth<br>Name: Elizabeth Brown<br>Name: Ann Devon<br>Name: Simon Crowther<br>Name: Hari Kumar <br /><p>Excellent, just what I wanted. I love it when a plan comes together. J</p><br /><p>That’s it folks. That’s a LINQ IQueryable provider. Well, at least a crude facsimile of one. Of course, yours will do so much more than mine. It will handle all the edge cases and serve coffee. <br /><p>But wait, there's more. <a href="http://blogs.msdn.com/mattwar/archive/2007/08/01/linq-building-an-iqueryable-provider-part-iii.aspx">Check out Part III</a> <br /><p><b>APPENDIX – The Expression Visitor</b> <br /><p>Now you are in for it. I think I’ve received about an order of magnitude more requests for this class than for help on building a query provider. There is an ExpressionVisitor class in System.Linq.Expressions, however it is internal so it’s not for your direct consumption as much as you’d like it to be. If you shout real loud you might convince us to make that one public in the next go ‘round. <br /><p>This expression visitor is my take on the (classic) visitor pattern. In this variant there is only one visitor class that dispatches calls to the general Visit function out to specific VisitXXX methods corresponding to different node types. Note not every node type gets it own method, for example all binary operators are treated in one VisitBinary method. The nodes themselves do not directly participate in the visitation process. They are treated as just data. The reason for this is that the quantity of visitors is actually open ended. You can write your own. Therefore no semantics of visiting is coupled into the node classes. It’s all in the visitors. The default visit behavior for node XXX is baked into the base class’s version of VisitXXX. <br /><p>Another variant is that all VisitXXX methods return a node. The Expression tree nodes are immutable. In order to change the tree you must construct a new one. The default VisitXXX methods will construct a new node if any of its sub-trees change. If no changes are made then the same node is returned. That way if you make a change to a node (by making a new node) deep down in a tree, the rest of the tree is rebuilt automatically for you. <br /><p>Here’s the code. Enjoy. J<pre class="code"><span style="color: blue">public abstract class </span><span style="color: #2b91af">ExpressionVisitor<br /></span>{<br /> <span style="color: blue">protected </span>ExpressionVisitor()<br /> {<br /> }<br /><br /> <span style="color: blue">protected virtual </span>Expression Visit(Expression exp)<br /> {<br /> <span style="color: blue">if </span>(exp == <span style="color: blue">null</span>)<br /> <span style="color: blue">return </span>exp;<br /> <span style="color: blue">switch </span>(exp.NodeType)<br /> {<br /> <span style="color: blue">case </span>ExpressionType.Negate:<br /> <span style="color: blue">case </span>ExpressionType.NegateChecked:<br /> <span style="color: blue">case </span>ExpressionType.Not:<br /> <span style="color: blue">case </span>ExpressionType.Convert:<br /> <span style="color: blue">case </span>ExpressionType.ConvertChecked:<br /> <span style="color: blue">case </span>ExpressionType.ArrayLength:<br /> <span style="color: blue">case </span>ExpressionType.Quote:<br /> <span style="color: blue">case </span>ExpressionType.TypeAs:<br /> <span style="color: blue">return this</span>.VisitUnary((UnaryExpression)exp);<br /> <span style="color: blue">case </span>ExpressionType.Add:<br /> <span style="color: blue">case </span>ExpressionType.AddChecked:<br /> <span style="color: blue">case </span>ExpressionType.Subtract:<br /> <span style="color: blue">case </span>ExpressionType.SubtractChecked:<br /> <span style="color: blue">case </span>ExpressionType.Multiply:<br /> <span style="color: blue">case </span>ExpressionType.MultiplyChecked:<br /> <span style="color: blue">case </span>ExpressionType.Divide:<br /> <span style="color: blue">case </span>ExpressionType.Modulo:<br /> <span style="color: blue">case </span>ExpressionType.And:<br /> <span style="color: blue">case </span>ExpressionType.AndAlso:<br /> <span style="color: blue">case </span>ExpressionType.Or:<br /> <span style="color: blue">case </span>ExpressionType.OrElse:<br /> <span style="color: blue">case </span>ExpressionType.LessThan:<br /> <span style="color: blue">case </span>ExpressionType.LessThanOrEqual:<br /> <span style="color: blue">case </span>ExpressionType.GreaterThan:<br /> <span style="color: blue">case </span>ExpressionType.GreaterThanOrEqual:<br /> <span style="color: blue">case </span>ExpressionType.Equal:<br /> <span style="color: blue">case </span>ExpressionType.NotEqual:<br /> <span style="color: blue">case </span>ExpressionType.Coalesce:<br /> <span style="color: blue">case </span>ExpressionType.ArrayIndex:<br /> <span style="color: blue">case </span>ExpressionType.RightShift:<br /> <span style="color: blue">case </span>ExpressionType.LeftShift:<br /> <span style="color: blue">case </span>ExpressionType.ExclusiveOr:<br /> <span style="color: blue">return this</span>.VisitBinary((BinaryExpression)exp);<br /> <span style="color: blue">case </span>ExpressionType.TypeIs:<br /> <span style="color: blue">return this</span>.VisitTypeIs((TypeBinaryExpression)exp);<br /> <span style="color: blue">case </span>ExpressionType.Conditional:<br /> <span style="color: blue">return this</span>.VisitConditional((ConditionalExpression)exp);<br /> <span style="color: blue">case </span>ExpressionType.Constant:<br /> <span style="color: blue">return this</span>.VisitConstant((ConstantExpression)exp);<br /> <span style="color: blue">case </span>ExpressionType.Parameter:<br /> <span style="color: blue">return this</span>.VisitParameter((ParameterExpression)exp);<br /> <span style="color: blue">case </span>ExpressionType.MemberAccess:<br /> <span style="color: blue">return this</span>.VisitMemberAccess((MemberExpression)exp);<br /> <span style="color: blue">case </span>ExpressionType.Call:<br /> <span style="color: blue">return this</span>.VisitMethodCall((MethodCallExpression)exp);<br /> <span style="color: blue">case </span>ExpressionType.Lambda:<br /> <span style="color: blue">return this</span>.VisitLambda((LambdaExpression)exp);<br /> <span style="color: blue">case </span>ExpressionType.New:<br /> <span style="color: blue">return this</span>.VisitNew((NewExpression)exp);<br /> <span style="color: blue">case </span>ExpressionType.NewArrayInit:<br /> <span style="color: blue">case </span>ExpressionType.NewArrayBounds:<br /> <span style="color: blue">return this</span>.VisitNewArray((NewArrayExpression)exp);<br /> <span style="color: blue">case </span>ExpressionType.Invoke:<br /> <span style="color: blue">return this</span>.VisitInvocation((InvocationExpression)exp);<br /> <span style="color: blue">case </span>ExpressionType.MemberInit:<br /> <span style="color: blue">return this</span>.VisitMemberInit((MemberInitExpression)exp);<br /> <span style="color: blue">case </span>ExpressionType.ListInit:<br /> <span style="color: blue">return this</span>.VisitListInit((ListInitExpression)exp);<br /> <span style="color: blue">default</span>:<br /> <span style="color: blue">throw new </span>Exception(<span style="color: blue">string</span>.Format(<span style="color: #a31515">"Unhandled expression type: '{0}'"</span>, exp.NodeType));<br /> }<br /> }<br /><br /> <span style="color: blue">protected virtual </span>MemberBinding VisitBinding(MemberBinding binding)<br /> {<br /> <span style="color: blue">switch </span>(binding.BindingType)<br /> {<br /> <span style="color: blue">case </span>MemberBindingType.Assignment:<br /> <span style="color: blue">return this</span>.VisitMemberAssignment((MemberAssignment)binding);<br /> <span style="color: blue">case </span>MemberBindingType.MemberBinding:<br /> <span style="color: blue">return this</span>.VisitMemberMemberBinding((MemberMemberBinding)binding);<br /> <span style="color: blue">case </span>MemberBindingType.ListBinding:<br /> <span style="color: blue">return this</span>.VisitMemberListBinding((MemberListBinding)binding);<br /> <span style="color: blue">default</span>:<br /> <span style="color: blue">throw new </span>Exception(<span style="color: blue">string</span>.Format(<span style="color: #a31515">"Unhandled binding type '{0}'"</span>, binding.BindingType));<br /> }<br /> }<br /><br /> <span style="color: blue">protected virtual </span>ElementInit VisitElementInitializer(ElementInit initializer)<br /> {<br /> ReadOnlyCollection<Expression> arguments = <span style="color: blue">this</span>.VisitExpressionList(initializer.Arguments);<br /> <span style="color: blue">if </span>(arguments != initializer.Arguments)<br /> {<br /> <span style="color: blue">return </span>Expression.ElementInit(initializer.AddMethod, arguments);<br /> }<br /> <span style="color: blue">return </span>initializer;<br /> }<br /><br /> <span style="color: blue">protected virtual </span>Expression VisitUnary(UnaryExpression u)<br /> {<br /> Expression operand = <span style="color: blue">this</span>.Visit(u.Operand);<br /> <span style="color: blue">if </span>(operand != u.Operand)<br /> {<br /> <span style="color: blue">return </span>Expression.MakeUnary(u.NodeType, operand, u.Type, u.Method);<br /> }<br /> <span style="color: blue">return </span>u;<br /> }<br /><br /> <span style="color: blue">protected virtual </span>Expression VisitBinary(BinaryExpression b)<br /> {<br /> Expression left = <span style="color: blue">this</span>.Visit(b.Left);<br /> Expression right = <span style="color: blue">this</span>.Visit(b.Right);<br /> Expression conversion = <span style="color: blue">this</span>.Visit(b.Conversion);<br /> <span style="color: blue">if </span>(left != b.Left || right != b.Right || conversion != b.Conversion)<br /> {<br /> <span style="color: blue">if </span>(b.NodeType == ExpressionType.Coalesce && b.Conversion != <span style="color: blue">null</span>)<br /> <span style="color: blue">return </span>Expression.Coalesce(left, right, conversion <span style="color: blue">as </span>LambdaExpression);<br /> <span style="color: blue">else<br /> return </span>Expression.MakeBinary(b.NodeType, left, right, b.IsLiftedToNull, b.Method);<br /> }<br /> <span style="color: blue">return </span>b;<br /> }<br /><br /> <span style="color: blue">protected virtual </span>Expression VisitTypeIs(TypeBinaryExpression b)<br /> {<br /> Expression expr = <span style="color: blue">this</span>.Visit(b.Expression);<br /> <span style="color: blue">if </span>(expr != b.Expression)<br /> {<br /> <span style="color: blue">return </span>Expression.TypeIs(expr, b.TypeOperand);<br /> }<br /> <span style="color: blue">return </span>b;<br /> }<br /><br /> <span style="color: blue">protected virtual </span>Expression VisitConstant(ConstantExpression c)<br /> {<br /> <span style="color: blue">return </span>c;<br /> }<br /><br /> <span style="color: blue">protected virtual </span>Expression VisitConditional(ConditionalExpression c)<br /> {<br /> Expression test = <span style="color: blue">this</span>.Visit(c.Test);<br /> Expression ifTrue = <span style="color: blue">this</span>.Visit(c.IfTrue);<br /> Expression ifFalse = <span style="color: blue">this</span>.Visit(c.IfFalse);<br /> <span style="color: blue">if </span>(test != c.Test || ifTrue != c.IfTrue || ifFalse != c.IfFalse)<br /> {<br /> <span style="color: blue">return </span>Expression.Condition(test, ifTrue, ifFalse);<br /> }<br /> <span style="color: blue">return </span>c;<br /> }<br /><br /> <span style="color: blue">protected virtual </span>Expression VisitParameter(ParameterExpression p)<br /> {<br /> <span style="color: blue">return </span>p;<br /> }<br /><br /> <span style="color: blue">protected virtual </span>Expression VisitMemberAccess(MemberExpression m)<br /> {<br /> Expression exp = <span style="color: blue">this</span>.Visit(m.Expression);<br /> <span style="color: blue">if </span>(exp != m.Expression)<br /> {<br /> <span style="color: blue">return </span>Expression.MakeMemberAccess(exp, m.Member);<br /> }<br /> <span style="color: blue">return </span>m;<br /> }<br /><br /> <span style="color: blue">protected virtual </span>Expression VisitMethodCall(MethodCallExpression m)<br /> {<br /> Expression obj = <span style="color: blue">this</span>.Visit(m.Object);<br /> IEnumerable<Expression> args = <span style="color: blue">this</span>.VisitExpressionList(m.Arguments);<br /> <span style="color: blue">if </span>(obj != m.Object || args != m.Arguments)<br /> {<br /> <span style="color: blue">return </span>Expression.Call(obj, m.Method, args);<br /> }<br /> <span style="color: blue">return </span>m;<br /> }<br /><br /> <span style="color: blue">protected virtual </span>ReadOnlyCollection<Expression> VisitExpressionList(ReadOnlyCollection<Expression> original)<br /> {<br /> List<Expression> list = <span style="color: blue">null</span>;<br /> <span style="color: blue">for </span>(<span style="color: blue">int </span>i = 0, n = original.Count; i < n; i++)<br /> {<br /> Expression p = <span style="color: blue">this</span>.Visit(original[i]);<br /> <span style="color: blue">if </span>(list != <span style="color: blue">null</span>)<br /> {<br /> list.Add(p);<br /> }<br /> <span style="color: blue">else if </span>(p != original[i])<br /> {<br /> list = <span style="color: blue">new </span>List<Expression>(n);<br /> <span style="color: blue">for </span>(<span style="color: blue">int </span>j = 0; j < i; j++)<br /> {<br /> list.Add(original[j]);<br /> }<br /> list.Add(p);<br /> }<br /> }<br /> <span style="color: blue">if </span>(list != <span style="color: blue">null</span>)<br /> {<br /> <span style="color: blue">return </span>list.AsReadOnly();<br /> }<br /> <span style="color: blue">return </span>original;<br /> }<br /><br /> <span style="color: blue">protected virtual </span>MemberAssignment VisitMemberAssignment(MemberAssignment assignment)<br /> {<br /> Expression e = <span style="color: blue">this</span>.Visit(assignment.Expression);<br /> <span style="color: blue">if </span>(e != assignment.Expression)<br /> {<br /> <span style="color: blue">return </span>Expression.Bind(assignment.Member, e);<br /> }<br /> <span style="color: blue">return </span>assignment;<br /> }<br /><br /><br /><br /> <span style="color: blue">protected virtual </span>MemberMemberBinding VisitMemberMemberBinding(MemberMemberBinding binding)<br /> {<br /> IEnumerable<MemberBinding> bindings = <span style="color: blue">this</span>.VisitBindingList(binding.Bindings);<br /> <span style="color: blue">if </span>(bindings != binding.Bindings)<br /> {<br /> <span style="color: blue">return </span>Expression.MemberBind(binding.Member, bindings);<br /> }<br /> <span style="color: blue">return </span>binding;<br /> }<br /><br /> <span style="color: blue">protected virtual </span>MemberListBinding VisitMemberListBinding(MemberListBinding binding)<br /> {<br /> IEnumerable<ElementInit> initializers = <span style="color: blue">this</span>.VisitElementInitializerList(binding.Initializers);<br /> <span style="color: blue">if </span>(initializers != binding.Initializers)<br /> {<br /> <span style="color: blue">return </span>Expression.ListBind(binding.Member, initializers);<br /> }<br /> <span style="color: blue">return </span>binding;<br /> }<br /><br /> <span style="color: blue">protected virtual </span>IEnumerable<MemberBinding> VisitBindingList(ReadOnlyCollection<MemberBinding> original)<br /> {<br /> List<MemberBinding> list = <span style="color: blue">null</span>;<br /> <span style="color: blue">for </span>(<span style="color: blue">int </span>i = 0, n = original.Count; i < n; i++)<br /> {<br /> MemberBinding b = <span style="color: blue">this</span>.VisitBinding(original[i]);<br /> <span style="color: blue">if </span>(list != <span style="color: blue">null</span>)<br /> {<br /> list.Add(b);<br /> }<br /> <span style="color: blue">else if </span>(b != original[i])<br /> {<br /> list = <span style="color: blue">new </span>List<MemberBinding>(n);<br /> <span style="color: blue">for </span>(<span style="color: blue">int </span>j = 0; j < i; j++)<br /> {<br /> list.Add(original[j]);<br /> }<br /> list.Add(b);<br /> }<br /> }<br /> <span style="color: blue">if </span>(list != <span style="color: blue">null</span>)<br /> <span style="color: blue">return </span>list;<br /> <span style="color: blue">return </span>original;<br /> }<br /><br /> <span style="color: blue">protected virtual </span>IEnumerable<ElementInit> VisitElementInitializerList(ReadOnlyCollection<ElementInit> original)<br /> {<br /> List<ElementInit> list = <span style="color: blue">null</span>;<br /> <span style="color: blue">for </span>(<span style="color: blue">int </span>i = 0, n = original.Count; i < n; i++)<br /> {<br /> ElementInit init = <span style="color: blue">this</span>.VisitElementInitializer(original[i]);<br /> <span style="color: blue">if </span>(list != <span style="color: blue">null</span>)<br /> {<br /> list.Add(init);<br /> }<br /> <span style="color: blue">else if </span>(init != original[i])<br /> {<br /> list = <span style="color: blue">new </span>List<ElementInit>(n);<br /> <span style="color: blue">for </span>(<span style="color: blue">int </span>j = 0; j < i; j++)<br /> {<br /> list.Add(original[j]);<br /> }<br /> list.Add(init);<br /> }<br /> }<br /> <span style="color: blue">if </span>(list != <span style="color: blue">null</span>)<br /> <span style="color: blue">return </span>list;<br /> <span style="color: blue">return </span>original;<br /> }<br /><br /> <span style="color: blue">protected virtual </span>Expression VisitLambda(LambdaExpression lambda)<br /> {<br /> Expression body = <span style="color: blue">this</span>.Visit(lambda.Body);<br /> <span style="color: blue">if </span>(body != lambda.Body)<br /> {<br /> <span style="color: blue">return </span>Expression.Lambda(lambda.Type, body, lambda.Parameters);<br /> }<br /> <span style="color: blue">return </span>lambda;<br /> }<br /><br /> <span style="color: blue">protected virtual </span>NewExpression VisitNew(NewExpression nex)<br /> {<br /> IEnumerable<Expression> args = <span style="color: blue">this</span>.VisitExpressionList(nex.Arguments);<br /> <span style="color: blue">if </span>(args != nex.Arguments)<br /> {<br /> <span style="color: blue">if </span>(nex.Members != <span style="color: blue">null</span>)<br /> <span style="color: blue">return </span>Expression.New(nex.Constructor, args, nex.Members);<br /> <span style="color: blue">else<br /> return </span>Expression.New(nex.Constructor, args);<br /> }<br /> <span style="color: blue">return </span>nex;<br /> }<br /><br /> <span style="color: blue">protected virtual </span>Expression VisitMemberInit(MemberInitExpression init)<br /> {<br /> NewExpression n = <span style="color: blue">this</span>.VisitNew(init.NewExpression);<br /> IEnumerable<MemberBinding> bindings = <span style="color: blue">this</span>.VisitBindingList(init.Bindings);<br /> <span style="color: blue">if </span>(n != init.NewExpression || bindings != init.Bindings)<br /> {<br /> <span style="color: blue">return </span>Expression.MemberInit(n, bindings);<br /> }<br /> <span style="color: blue">return </span>init;<br /> }<br /><br /> <span style="color: blue">protected virtual </span>Expression VisitListInit(ListInitExpression init)<br /> {<br /> NewExpression n = <span style="color: blue">this</span>.VisitNew(init.NewExpression);<br /> IEnumerable<ElementInit> initializers = <span style="color: blue">this</span>.VisitElementInitializerList(init.Initializers);<br /> <span style="color: blue">if </span>(n != init.NewExpression || initializers != init.Initializers)<br /> {<br /> <span style="color: blue">return </span>Expression.ListInit(n, initializers);<br /> }<br /> <span style="color: blue">return </span>init;<br /> }<br /><br /> <span style="color: blue">protected virtual </span>Expression VisitNewArray(NewArrayExpression na)<br /> {<br /> IEnumerable<Expression> exprs = <span style="color: blue">this</span>.VisitExpressionList(na.Expressions);<br /> <span style="color: blue">if </span>(exprs != na.Expressions)<br /> {<br /> <span style="color: blue">if </span>(na.NodeType == ExpressionType.NewArrayInit)<br /> {<br /> <span style="color: blue">return </span>Expression.NewArrayInit(na.Type.GetElementType(), exprs);<br /> }<br /> <span style="color: blue">else<br /> </span>{<br /> <span style="color: blue">return </span>Expression.NewArrayBounds(na.Type.GetElementType(), exprs);<br /> }<br /> }<br /> <span style="color: blue">return </span>na;<br /> }<br /><br /> <span style="color: blue">protected virtual </span>Expression VisitInvocation(InvocationExpression iv)<br /> {<br /> IEnumerable<Expression> args = <span style="color: blue">this</span>.VisitExpressionList(iv.Arguments);<br /> Expression expr = <span style="color: blue">this</span>.Visit(iv.Expression);<br /> <span style="color: blue">if </span>(args != iv.Arguments || expr != iv.Expression)<br /> {<br /> <span style="color: blue">return </span>Expression.Invoke(expr, args);<br /> }<br /> <span style="color: blue">return </span>iv;<br /> }<br />}</pre>Original post can be found <a href="http://blogs.msdn.com/mattwar/archive/2007/07/31/linq-building-an-iqueryable-provider-part-ii.aspx" target="_blank">here</a> Anonymoushttp://www.blogger.com/profile/17445191350548842437noreply@blogger.comtag:blogger.com,1999:blog-1002597578696693985.post-18778397219229855332009-08-20T01:46:00.001-07:002009-09-02T20:47:19.676-07:00LINQ: Building an IQueryable Provider - Part I<p>I’ve been meaning for a while to start up a series of posts that covers building LINQ providers using IQueryable. People have been asking me advice on doing this for quite some time now, whether through internal Microsoft email or questions on the forums or by cracking the encryption and mailing me directly. Of course, I’ve mostly replied with “I’m working on a sample that will show you everything” letting them know that soon all will be revealed. However, instead of just posting a full sample here I felt it prudent to go step by step so I can actual dive deep and explain everything that is going on instead of just dumping it all in your lap and letting you find your own way. <p>The first thing I ought to point out to you is that IQueryable has changed in Beta 2. It’s no longer just one interface, having been factored into two: IQueryable and IQueryProvider. Let’s just walk through these before we get to actually implementing them. <p>If you use Visual Studio to ‘go to definition’ you get something that looks like this: <p> </p><pre class="code"><span style="color: blue">public interface </span><span style="color: #2b91af">IQueryable </span>: IEnumerable<br />{<br /><br /> Type ElementType { <span style="color: blue">get</span>; }<br /><br /> Expression Expression { <span style="color: blue">get</span>; }<br /><br /> IQueryProvider Provider { <span style="color: blue">get</span>; }<br /><br />}<br /><br /><span style="color: blue">public interface </span><span style="color: #2b91af">IQueryable</span><T> : IEnumerable<T>, <span style="color: #2b91af">IQueryable</span>, IEnumerable<br />{<br /><br />}</pre><a href="http://11011.net/software/vspaste"></a><br /><p>Of course, IQueryable no longer looks all that interesting; the good stuff has been pushed off into the new interface IQueryProvider. Yet before I get into that, IQueryable is still worth looking at. As you can see the only things IQueryable has are three read-only properties. The first one gives you the element type (or the ‘T’ in IQueryable<T>). It’s important to note that all classes that implement IQueryable must also implement IQueryable<T> for some T and vice versa. The generic IQueryable<T> is the one you use most often in method signatures and the like. The non-generic IQueryable exist primarily to give you a weakly typed entry point primarily for dynamic query building scenarios. <br /><p>The second property gives you the expression that corresponds to the query. This is quintessential essence of IQueryable’s being. The actual ‘query’ underneath the hood of an IQueryable is an expression that represents the query as a tree of LINQ query operators/method calls. This is the part of the IQueryable that your provider must comprehend in order to do anything useful. If you look deeper you will see that the whole IQueryable infrastructure (including the System.Linq.Queryable version of LINQ standard query operators) is just a mechanism to auto-construct expression tree nodes for you. When you use the Queryable.Where method to apply a filter to an IQueryable, it simply builds you a new IQueryable adding a method-call expression node on top of the tree representing the call you just made to Queryable.Where. Don’t believe me? Try it yourself and see what it does. <br /><p>Now that just leaves us with the last property that gives us an instance of this new interface IQueryProvider. What we’ve done is move all the methods that implement constructing new IQueryables and executing them off into a separate interface that more logically represents your true provider.<pre class="code"><span style="color: blue">public interface </span><span style="color: #2b91af">IQueryProvider<br /></span>{<br /><br /> IQueryable CreateQuery(Expression expression);<br /><br /> IQueryable<TElement> CreateQuery<TElement>(Expression expression);<br /><br /> <span style="color: blue">object </span>Execute(Expression expression);<br /><br /> TResult Execute<TResult>(Expression expression);<br /><br />}</pre><a href="http://11011.net/software/vspaste"></a><br /><p>Looking at the IQueryProvider interface you might be thinking, “why all these methods?” The truth is that there are really only two operations, CreateQuery and Execute, we just have both a generic and a non-generic form of each. The generic forms are used most often when you write queries directly in the programming language and perform better since we can avoid using reflection to construct instances. <br /><p>The CreateQuery method does exactly what it sounds like it does. It creates a new instance of an IQueryable query based on the specified expression tree. When someone calls this method they are basically asking your provider to build a new instance of an IQueryable that when enumerated will invoke your query provider and process this specific query expression. The Queryable form of the standard query operators use this method to construct new IQueryable’s that stay associated with your provider. Note the caller can pass any expression tree possible to this API. It may not even be a legal query for your provider. However, the only thing that must be true is that expression itself must be typed to return/produce a correctly typed IQueryable. You see the IQueryable contains an expression that represents a snippet of code that if turned into actual code and executed would reconstruct that very same IQueryable (or its equivalent). <br /><p>The Execute method is the entry point into your provider for actually executing query expressions. Having an explicit execute instead of just relying on IEnumerable.GetEnumerator() is important because it allows execution of expressions that do not necessarily yield sequences. For example, the query “myquery.Count()” returns a single integer. The expression tree for this query is a method call to the Count method that returns the integer. The Queryable.Count method (as well as the other aggregates and the like) use this method to execute the query ‘right now’. <br /><p>There, that doesn’t seem so frightening does it? You could implement all those methods easily, right? Sure you could, but why bother. I’ll do it for you. Well all except for the execute method. I’ll show you how to do that in a later post. <br /><p>First let’s start with the IQuerayble. Since this interface has been split into two, it’s now possible to implement the IQueryable part just once and re-use it for any provider. I’ll implement a class called Query<T> that implements IQueryable<T> and all the rest. <pre class="code"><span style="color: blue">public class </span><span style="color: #2b91af">Query</span><T> : IQueryable<T>, IQueryable, IEnumerable<T>, IEnumerable, IOrderedQueryable<T>, IOrderedQueryable<br />{<br /><br /> QueryProvider provider;<br /><br /> Expression expression;<br /><br /><br /><br /> <span style="color: blue">public </span>Query(QueryProvider provider)<br /> {<br /><br /> <span style="color: blue">if </span>(provider == <span style="color: blue">null</span>)<br /> {<br /><br /> <span style="color: blue">throw new </span>ArgumentNullException(<span style="color: #a31515">"provider"</span>);<br /><br /> }<br /><br /> <span style="color: blue">this</span>.provider = provider;<br /><br /> <span style="color: blue">this</span>.expression = Expression.Constant(<span style="color: blue">this</span>);<br /><br /> }<br /><br /><br /><br /> <span style="color: blue">public </span>Query(QueryProvider provider, Expression expression)<br /> {<br /><br /> <span style="color: blue">if </span>(provider == <span style="color: blue">null</span>)<br /> {<br /><br /> <span style="color: blue">throw new </span>ArgumentNullException(<span style="color: #a31515">"provider"</span>);<br /><br /> }<br /><br /> <span style="color: blue">if </span>(expression == <span style="color: blue">null</span>)<br /> {<br /><br /> <span style="color: blue">throw new </span>ArgumentNullException(<span style="color: #a31515">"expression"</span>);<br /><br /> }<br /><br /> <span style="color: blue">if </span>(!<span style="color: blue">typeof</span>(IQueryable<T>).IsAssignableFrom(expression.Type))<br /> {<br /><br /> <span style="color: blue">throw new </span>ArgumentOutOfRangeException(<span style="color: #a31515">"expression"</span>);<br /><br /> }<br /><br /> <span style="color: blue">this</span>.provider = provider;<br /><br /> <span style="color: blue">this</span>.expression = expression;<br /><br /> }<br /><br /><br /><br /> Expression IQueryable.Expression<br /> {<br /><br /> <span style="color: blue">get </span>{ <span style="color: blue">return this</span>.expression; }<br /><br /> }<br /><br /><br /><br /> Type IQueryable.ElementType<br /> {<br /><br /> <span style="color: blue">get </span>{ <span style="color: blue">return typeof</span>(T); }<br /><br /> }<br /><br /><br /><br /> IQueryProvider IQueryable.Provider<br /> {<br /><br /> <span style="color: blue">get </span>{ <span style="color: blue">return this</span>.provider; }<br /><br /> }<br /><br /><br /><br /> <span style="color: blue">public </span>IEnumerator<T> GetEnumerator()<br /> {<br /><br /> <span style="color: blue">return </span>((IEnumerable<T>)<span style="color: blue">this</span>.provider.Execute(<span style="color: blue">this</span>.expression)).GetEnumerator();<br /><br /> }<br /><br /><br /><br /> IEnumerator IEnumerable.GetEnumerator()<br /> {<br /><br /> <span style="color: blue">return </span>((IEnumerable)<span style="color: blue">this</span>.provider.Execute(<span style="color: blue">this</span>.expression)).GetEnumerator();<br /><br /> }<br /><br /><br /><br /> <span style="color: blue">public override string </span>ToString()<br /> {<br /><br /> <span style="color: blue">return this</span>.provider.GetQueryText(<span style="color: blue">this</span>.expression);<br /><br /> }<br /><br />}</pre><a href="http://11011.net/software/vspaste"></a><br /><p>As you can see now, the IQueryable implementation is straightforward. This little object really does just hold onto an expression tree and a provider instance. The provider is where it really gets juicy. <br /><p>Okay, now I need some provider to show you. I’ve implemented an abstract base class called QueryProvider that Query<T> referred to above. A real provider can just derive from this class and implement the Execute method.<pre class="code"><span style="color: blue">public abstract class </span><span style="color: #2b91af">QueryProvider </span>: IQueryProvider<br />{<br /><br /> <span style="color: blue">protected </span>QueryProvider()<br /> {<br /><br /> }<br /><br /><br /><br /> IQueryable<S> IQueryProvider.CreateQuery<S>(Expression expression)<br /> {<br /><br /> <span style="color: blue">return new </span>Query<S>(<span style="color: blue">this</span>, expression);<br /><br /> }<br /><br /><br /><br /> IQueryable IQueryProvider.CreateQuery(Expression expression)<br /> {<br /><br /> Type elementType = TypeSystem.GetElementType(expression.Type);<br /><br /> <span style="color: blue">try<br /> </span>{<br /><br /> <span style="color: blue">return </span>(IQueryable)Activator.CreateInstance(<span style="color: blue">typeof</span>(Query<>).MakeGenericType(elementType), <span style="color: blue">new object</span>[] { <span style="color: blue">this</span>, expression });<br /><br /> }<br /><br /> <span style="color: blue">catch </span>(TargetInvocationException tie)<br /> {<br /><br /> <span style="color: blue">throw </span>tie.InnerException;<br /><br /> }<br /><br /> }<br /><br /><br /><br /> S IQueryProvider.Execute<S>(Expression expression)<br /> {<br /><br /> <span style="color: blue">return </span>(S)<span style="color: blue">this</span>.Execute(expression);<br /><br /> }<br /><br /><br /><br /> <span style="color: blue">object </span>IQueryProvider.Execute(Expression expression)<br /> {<br /><br /> <span style="color: blue">return this</span>.Execute(expression);<br /><br /> }<br /><br /><br /><br /> <span style="color: blue">public abstract string </span>GetQueryText(Expression expression);<br /><br /> <span style="color: blue">public abstract object </span>Execute(Expression expression);<br /><br />}</pre><a href="http://11011.net/software/vspaste"></a><br /><p>I’ve implemented the IQueryProvider interface on my base class QueryProvider. The CreateQuery methods create new instances of Query<T> and the Execute methods forward execution to this great new and not-yet-implemented Execute method. <br /><p>I suppose you can think of this as boilerplate code you have to write just to get started building a LINQ IQueryable provider. The real action happens inside the Execute method. That’s where your provider has the opportunity to make sense of the query by examining the expression tree. <br /><p>And that’s what I’ll start showing next time. <br /><p>UPDATE: <br /><p>It looks like I’ve forget to define a little helper class my implementation was using, so here it is:<pre class="code"><span style="color: blue">internal static class </span><span style="color: #2b91af">TypeSystem<br /></span>{<br /><br /> <span style="color: blue">internal static </span>Type GetElementType(Type seqType)<br /> {<br /><br /> Type ienum = FindIEnumerable(seqType);<br /><br /> <span style="color: blue">if </span>(ienum == <span style="color: blue">null</span>) <span style="color: blue">return </span>seqType;<br /><br /> <span style="color: blue">return </span>ienum.GetGenericArguments()[0];<br /><br /> }<br /><br /> <span style="color: blue">private static </span>Type FindIEnumerable(Type seqType)<br /> {<br /><br /> <span style="color: blue">if </span>(seqType == <span style="color: blue">null </span>|| seqType == <span style="color: blue">typeof</span>(<span style="color: blue">string</span>))<br /><br /> <span style="color: blue">return null</span>;<br /><br /> <span style="color: blue">if </span>(seqType.IsArray)<br /><br /> <span style="color: blue">return typeof</span>(IEnumerable<>).MakeGenericType(seqType.GetElementType());<br /><br /> <span style="color: blue">if </span>(seqType.IsGenericType)<br /> {<br /><br /> <span style="color: blue">foreach </span>(Type arg <span style="color: blue">in </span>seqType.GetGenericArguments())<br /> {<br /><br /> Type ienum = <span style="color: blue">typeof</span>(IEnumerable<>).MakeGenericType(arg);<br /><br /> <span style="color: blue">if </span>(ienum.IsAssignableFrom(seqType))<br /> {<br /><br /> <span style="color: blue">return </span>ienum;<br /><br /> }<br /><br /> }<br /><br /> }<br /><br /> Type[] ifaces = seqType.GetInterfaces();<br /><br /> <span style="color: blue">if </span>(ifaces != <span style="color: blue">null </span>&& ifaces.Length > 0)<br /> {<br /><br /> <span style="color: blue">foreach </span>(Type iface <span style="color: blue">in </span>ifaces)<br /> {<br /><br /> Type ienum = FindIEnumerable(iface);<br /><br /> <span style="color: blue">if </span>(ienum != <span style="color: blue">null</span>) <span style="color: blue">return </span>ienum;<br /><br /> }<br /><br /> }<br /><br /> <span style="color: blue">if </span>(seqType.BaseType != <span style="color: blue">null </span>&& seqType.BaseType != <span style="color: blue">typeof</span>(<span style="color: blue">object</span>))<br /> {<br /><br /> <span style="color: blue">return </span>FindIEnumerable(seqType.BaseType);<br /><br /> }<br /><br /> <span style="color: blue">return null</span>;<br /><br /> }<br /><br />}</pre><a href="http://11011.net/software/vspaste"></a>Yah, I know. There’s more ‘code’ in this helper than in all the rest. Sigh. J <br /><p>Original post can be found <a href="http://blogs.msdn.com/mattwar/archive/2007/07/30/linq-building-an-iqueryable-provider-part-i.aspx" target="_blank">here</a></p> Anonymoushttp://www.blogger.com/profile/17445191350548842437noreply@blogger.comtag:blogger.com,1999:blog-1002597578696693985.post-69696226161159173802009-08-16T22:09:00.001-07:002009-08-16T22:12:26.231-07:00A Defense of Reflection in .NET<p><img alt="Nick Harrison" src="http://www.simple-talk.com/iwritefor/publishers/141.gif" align="left"> <p>A Defense of Reflection in .NET <p>13 August 2009 <p>by <a href="http://www.simple-talk.com/author/nick-harrison/">Nick Harrison</a> <p>The trouble with making general rules about programming practices is that one can miss out on many benefits of of a framework by following them too literally in every context. Everyone knows that one should watch for performance problems and security issues with reflection. It doesn't mean you shouldn't it, it just means you must test carefully, monitor performance, and assess risks. Nick Harrison illustrates the theme with a practical example. <h3>Introduction</h3> <p>Reflection is one of the great marvels of modern programming environments. Being able to store meta data about our code, and retrieve it at run time, opens up a world of possibilities. Many developers and software designers have embraced reflection and sing its praises, but reflection is not without its critics. <p>Here we will explore some of the criticism of reflection, debunk some of the myths around its usage, and explore the benefits through some practical applications. <h3>What's Wrong With Reflection</h3> <p>There are various complaints and cautionary warnings against using reflection. Some of these are valid risks that we need to be aware of; others are wild tales based on early-adopters not understanding what they were using. Some are valid only in certain circumstances, or valid in all but special cases. Here we will explore some of these complaints. You should always be wary of a technology that is new or not well understood, but do not let that stand in the way of making appropriate use of technology. <h4>Performance</h4> <p>Everyone knows that reflection is slow. The web is full of well meaning warnings that one should not use Reflection if you care about performance. Retrieving the meta-data slows your application down: One is often reading advice that, If you care about performance, you should never use reflection. <p>This is a legitimate concern that should be taken seriously, but this is not a carte blanche reason not to ever use Reflection. <p>While you should always worry about performance, you should not let performance worries keep you from making appropriate use of new technology. Do your own timing studies in your own environment. If there are performance issues, there are ways to minimize the performance impact. <p>The DotNet framework itself uses reflection extensively. Reflection is being used whether we intend to or not. Take a look at the details in the <b>Machine.Config</b> file. Almost all that you see is providing details to open an Assembly and load a Type with Reflection to make the framework itself work. The DotNet framework is all about Reflection. <p>If performance worries still nag you, there are tweaks that you can make in your own code to improve performance. <p>If you are going to make repeated calls to the Properties of an object, cache the Properties in a Hash Table. Reference the hash table instead of repeated calls to <b>GetProperty</b> or <b>GetProperties</b>. The same is true for Methods, Types and Assemblies. <p>Get comfortable with the <b>BindingFlags</b> enumeration. Always specify <b>BindingFlags</b>. Never use the <b>IgnoreCase</b> flag. Limit the searches to Public. Limit the searches to Static or Instance as appropriate. <p>Don't just assume that performance will suffer. Embrace Reflection, but test it. There are various profiling tools, such as Red Gate's Ants Profiler. Use them to identify the true cause of a performance problem. If Reflection is the right tool, don't ignore it simply because someone told you that it will be slow. If it turns out be too slow for you, there are ways to optimize its usage. <h4>Security</h4> <p>Reflection, it is said, poses an unacceptable security risk. The essence of most designs that leverage Reflection also incorporate the process of dynamically discovering new code and executing it. This opens up a risk that malicious code will be executing and compromising the entire system. <p>In the modern world of Malware and security threats, we are all concerned about security. The risk with Reflection is that malicious code may be substituted for your own code. Many reflective designs do, indeed, rely on loading new assemblies, discovering new types, and running discovered methods and properties on these new types. While this may lead many to steer clear of a reflective solution, don't run scared. <p>An intruder would need to physically place malicious code where your reflective code can find it. While this is not impossible, a good defense in depth design can mitigate this risk. Properly configured firewalls with processing servers behind the firewalls will help. Intrusion detection will alert administrators to servers that are being targeted, and properly patched servers will help eliminate known vulnerabilities. <p>Code Access Security, properly configured, can also limit the access that reflective code has. With Code Access Security, individual assemblies can run with fewer rights than the user running the assembly. <p>This article is not about configuring security settings but rather to assure you that there are counter measures to any security concern that you may have. <h4>Confusion</h4> <p>Reflective code, so one hears, is very hard to follow. Developers new to the project will have difficulty learning the ropes. Anything that steepens the learning curve jeopardizes project time lines and should be avoided. If only a select group of developers can understand the reflective code then the project is overly dependent on this select group, and is doomed to fail. <p>This is also not a very legitimate concern. If every design decision is based on what the least experienced programmer can readily understand, our designs will be severely limited. Reflective code can, and should, be isolated. Daily development should not be modifying this code. Daily development should use the reflective methods to simplify daily development tasks. <p>We want our code to be easy to follow, and Reflective code is not always the most intuitive code to understand at first glance. Without a doubt the hard-coded option is easier to follow than the reflective version <p> </p> <p><strong>Hard Coded</strong></p> <p> </p><pre class="code"><span style="color: blue">public void </span>MapData(IEmployee first, IEmployee second)<br /><br />{<br /><br /> second.FirstName = first.FirstName;<br /><br /> second.Address = first.Address;<br /><br /> second.BranchLocation = first.BranchLocation;<br /><br />. . .<br /><br />}</pre><br /><p><strong>Reflective</strong><pre class="code"><span style="color: blue">public static void </span>MapData(<span style="color: blue">object </span>sourceObject,<br /><br /> <span style="color: blue">object </span>targetObject)<br /><br />{<br /><br /> <span style="color: blue">object</span>[] value = <span style="color: blue">new object</span>[1];<br /><br /> <span style="color: blue">object</span>[] param = <span style="color: blue">new object</span>[0];<br /><br /> <span style="color: blue">foreach </span>(PropertyInfo propertyInfo<br /><br /> <span style="color: blue">in </span>sourceObject.GetType().GetProperties())<br /><br /> {<br /><br /> PropertyInfo targetPropertyInfo =<br /><br /> targetObject.GetType().<br /><br /> GetProperty(propertyInfo.Name);<br /><br /> <span style="color: blue">if </span>(targetPropertyInfo.CanWrite)<br /><br /> {<br /><br /> value[0] = propertyInfo.GetValue(sourceObject,<br /><br /> BindingFlags.Public, <span style="color: blue">null</span>, <span style="color: blue">null</span>, <span style="color: blue">null</span>);<br /><br /> targetPropertyInfo.SetValue<br /><br /> (targetObject, value,<span style="color: blue">null</span>);<br /><br /> }<br /><br /> }<br /><br />}</pre><br /><p><a href="http://11011.net/software/vspaste"></a> </p><br /><p>Anyone can look at the hard-coded version and immediately tell what is going on. The reflective version will probably take a senior developer a second look to figure out.<br /><p>However, the hard-coded version is tedious code. Depending on the number of properties being mapped, more and more errors are likely to be introduced. In the long run, this results in more code that has to be hand written.<br /><p>While the reflective code may be hard to follow, it does not need to be referenced very often to be useful.<br /><p>With the hard-coded implementation, you have to write a similar method for every type that you want to map. This is a tedious proposition indeed! With the reflective implementation, this one method can handle the process of mapping any object in your system.<br /><p>For the observant reader, this is far from the most optimized implementation for the reflective version. We will go over the reflective version in more detail later and discuss various ways to optimize.<br /><h3>Why Use Reflection?</h3><br /><h4>Developer Performance</h4><br /><p>As mentioned earlier, the hard coded version is often tedious, and tedious code is often error-prone.<br /><p>You can well imagine the potential for introducing bugs by having to iterate through, and explicitly set, each property in an object. This can quickly get out of hand. Bugs from assigning the wrong value to the wrong property are easy to introduce and difficult to track down.<br /><p>It is much easier to write a single line of code to handle the mapping and then move on to more important tasks such as implementing business logic and meeting deadlines.<br /><p>A call like DataMapper.CopyTo (data, ui) is easy to understand and quick to write. As long as the property names match and are of the same types, you don't have to worry about missing any assignments. As a developer, you implement a series of rather simple properties to handle validation, and you don't have to get bogged down in the details of the mapping logic.<br /><h4>Stability / Consistency</h4><br /><p>Not everyone will get reflective code right the first time, but this is the beauty of consistency. If the implementation that everyone is using is inefficient or has a logic problem, you have only to correct it in one place. If there are multiple hard coded implementations, some will, no doubt, be done as efficiently as possible. Some will, to be sure, be free from all logic problems, but at least some implementations will have problems that will need to be addressed.<br /><p>Reflective code is much easier to reuse. If the code is widely reused, then we have fewer places to correct when there is a problem found.<br /><p>This consistency improves the overall stability of the system.<br /><h3>Practical Applications</h3><br /><h4>Tweaking Performance </h4><br /><p>Performance is always a concern. There are some simple steps that we can take to eke the best performance out of our reflective code.<br /><p>Whenever you make a Reflection call, make it count. Cache the output so that it can be reused. Calls to <b>GetProperty</b>, <b>LoadAssembly</b> or <b>GetType</b> are expensive. If there is any chance that you are going to need a method or a property more than once, store the return value so that you can use it later without having to make the call again. <p>This is also an example where multi threading can give you the perception of performance improvement. This proves to be a nice option for batch application and for business / data servers. This does not provide any benefit for the web UI, but can be very beneficial for a traditional windows application.<br /><h4>CopyTo</h4><br /><p><b>CopyTo</b> is the reflective MapData that we saw earlier. Let's discuss some strategies to get the basic method ready for prime-time. As we stated earlier, we don't want to throw away the return value of the <b>GetProperty</b> call. We also want to avoid calling <b>GetProperty</b> altogether when we are truly interested in every property.<br /><p>We start by checking to see if our collection of properties has already been loaded into a hash table. If they have, then we use this previously-loaded list. If not, we go ahead and load the details into the hash table. This will allow us to avoid the <b>GetProperty</b> calls altogether. If we are copying from one object to another of the same type, we dramatically reduce the number of reflection calls. If we call this method multiple times with the same set of objects, we reduce the reflective even more.<br /><p>Our caching logic could look similar to this:<br /><p> </p><pre class="code"><span style="color: blue">private </span>Hashtable properties;<br /><br /><span style="color: blue">private </span>Hashtable Properties<br /><br />{<br /><br /> <span style="color: blue">get<br /><br /> </span>{<br /><br /> <span style="color: blue">if </span>(properties == <span style="color: blue">null</span>)<br /><br /> properties = <span style="color: blue">new </span>Hashtable();<br /><br /> <span style="color: blue">return </span>properties;<br /><br /> }<br /><br />}<br /><br /> <br /><br /><span style="color: blue">private void </span>LoadProperties(<span style="color: blue">object </span>targetObject, Type targetType)<br /><br />{<br /><br /> <span style="color: blue">if </span>(properties[targetType.FullName] != <span style="color: blue">null</span>)<br /><br /> {<br /><br /> List<PropertyInfo> propertyList = <span style="color: blue">new </span>List<PropertyInfo>();<br /><br /> PropertyInfo[] objectProperties =<br /><br /> targetType.GetProperties(BindingFlags.Public);<br /><br /> <span style="color: blue">foreach </span>(PropertyInfo currentProperty <span style="color: blue">in </span>objectProperties)<br /><br /> {<br /><br /> propertyList.Add(currentProperty);<br /><br /> }<br /><br /> properties[targetObject] = propertyList;<br /><br /> }<br /><br />}</pre><a href="http://11011.net/software/vspaste"></a><br /><p>Here we first check to see if the Hash table already has a list of properties for our object. If it does then we have nothing to do. If not, we load the properties into a generic list to be added to the hash table.<br /><p>Our optimized <b>CopyTo </b>function can now be rewritten as:<br /><p> </p><pre class="code"><span style="color: blue">public void </span>CopyTo(<span style="color: blue">object </span>sourceObject, <span style="color: blue">object </span>targetObject)<br /><br />{<br /><br /> <span style="color: blue">object</span>[] value = <span style="color: blue">new object</span>[1];<br /><br /> Type sourceType = sourceObject.GetType();<br /><br /> Type targetType = targetObject.GetType();<br /><br /> <br /><br /> LoadProperties(sourceObject, sourceType);<br /><br /> LoadProperties(targetObject, targetType);<br /><br /> List<PropertyInfo> sourcePoperties =<br /><br /> Properties[sourceType.FullName] <span style="color: blue">as </span>List<PropertyInfo>;<br /><br /> List<PropertyInfo> targetProperties =<br /><br /> Properties[targetType.FullName] <span style="color: blue">as </span>List<PropertyInfo>;<br /><br /> <br /><br /> <span style="color: blue">foreach </span>(PropertyInfo sourceProperty <span style="color: blue">in </span>sourcePoperties)<br /><br /> {<br /><br /> PropertyInfo targetPropertyInfo = targetProperties.<br /><br /> Find(<span style="color: blue">delegate</span>(PropertyInfo prop)<br /><br /> { <span style="color: blue">return </span>prop.Name == sourceProperty.Name ; });<br /><br /> <span style="color: blue">if </span>(sourceProperty.CanRead)<br /><br /> {<br /><br /> <span style="color: blue">if </span>(targetPropertyInfo.CanWrite)<br /><br /> {<br /><br /> value[0] = sourceProperty.GetValue(sourceObject,<br /><br /> BindingFlags.Public, <span style="color: blue">null</span>, <span style="color: blue">null</span>, <span style="color: blue">null</span>);<br /><br /> targetPropertyInfo.SetValue<br /><br /> (targetObject, value, <span style="color: blue">null</span>);<br /><br /> }<br /><br /> }<br /><br /> }<br /><br />}</pre><a href="http://11011.net/software/vspaste"></a><br /><p>The biggest change we have here is in the calls to the <b>LoadProperties</b> method. If the properties are already loaded, this will have no effect. If they are not, this method will load the properties for us. Once our properties are loaded into the hash table, we can safely pull them out of the generic list instead of making repeated calls to <b>GetProperties</b> or <b>GetProperty</b>.<br /><p>Once we have our two properties, we make sure that the source can be read and that the target can be written to. Now we simply “get” the value from the source and “set” the value on the target.<br /><h4>MapDataToBusinessEntityCollection</h4><br /><p><b>MapDataToBusinessEntityCollection</b> is a generic Reflective method. We pass in the data-type for the objects to be mapped as a generic parameter along with a data reader. We use reflection to find the properties in this type and we use the meta data in the DataReader to find the fields.<br /><p>Whenever we find a field from the data reader that has a matching writable property in the generic type, we pull the value from the DataReader and assign it to a newly created object. Regardless of how many properties are in T, this method will map every property that has a matching field in the DataReader. Any properties that are not in the DataReader will be unmapped. Any fields in the data reader that do not have a matching property will be ignored. The validation logic is handled in the implementation of the properties in T.<br /><p><span style="color: blue">public static</span>List<T> MapDataToBusinessEntityCollection<T><br><br>(IDataReader dr)<br><br> where T : <span style="color: blue">new</span>()<br><br>{<br><br> Type businessEntityType = <span style="color: blue">typeof </span>(T);<br><br> List<T> entitys = <span style="color: blue">new</span>List<T>();<br><br> Hashtable hashtable = <span style="color: blue">new</span>Hashtable();<br><br> PropertyInfo[] properties = businessEntityType.GetProperties();<br><br> <span style="color: blue">foreach </span>(PropertyInfo info <span style="color: blue">in</span>properties)<br><br> {<br><br> hashtable[info.Name.ToUpper()] = info;<br><br> }<br><br> <span style="color: blue">while</span>(dr.Read())<br><br> {<br><br> T newObject = <span style="color: blue">new</span>T();<br><br> <span style="color: blue">for</span>(<span style="color: blue">int </span>index = 0; index < dr.FieldCount; index++)<br><br> {<br><br> PropertyInfo info = (PropertyInfo)<br><br> hashtable[dr.GetName(index).ToUpper()];<br><br> <span style="color: blue">if</span>((info != <span style="color: blue">null</span>) && info.CanWrite)<br><br> {<br><br> info.SetValue(newObject, dr.GetValue(index), <span style="color: blue">null</span>);<br><br> }<br><br> }<br><br> entitys.Add(newObject);<br><br> }<br><br> dr.Close();<br><br> <span style="color: blue">return</span>entitys;<br><br>}</p><br /><h3>Timing Studies</h3><br /><p>To evaluate the performance implications of this approach, I set up a test-bed to perform my own timing studies. An ounce of testing is worth a pound of speculation. <br /><p>In my test-bed, I defined an object to encapsulate the Employee table in the NorthWinds database. I loaded this table with 100,000 records and timed how long it took to retrieve records using various methods.<br /><p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZw_PwtXS0tb8_ICXtS5jGSZUjuYcFry8QnbETT1mFeLPDagprsM1I4_KISOeibvZnoIC9OJR8romVhj_HRcUSulRNKzFBH2IE-Wnow9H5jrwFeiOkrG77vSLLiAeds6QxZn96czP4Na8/s1600-h/777-ADefen1%5B8%5D.jpg"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="520" alt="777-ADefen1" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLnxFuB37jOMN5nTtfwCrYYywHjfZqqspyDEAwlaGTKadV7z50s1e7uJSbIANgu1M98QveVm8o10bPwhie0OhgXpQyF5Acd4nRnQTQ3dvJP4v4LvVcpUwpRly0-PVZ1F9FZrFRU-14joo/?imgmax=800" width="662" border="0"></a> <strong></strong></p><br /><p><strong>Hardcoded,</strong> is this case, is the worse way you can write a Hard-coded implementation, but it is also an approach that I have commonly seen followed.<a href="http://11011.net/software/vspaste"></a></p><pre class="code"><span style="color: blue">private void </span>HardCoded()<br /><br />{<br /><br /> System.DateTime start = DateTime.Now;<br /><br /> System.Data.IDataReader dr = GetData(recordCount);<br /><br /> <span style="color: blue">while </span>(dr.Read())<br /><br /> {<br /><br /> CustomTypes.Employees newEmployee =<br /><br /> <span style="color: blue">new </span>CustomTypes.Employees();<br /><br /> newEmployee.Address = dr[<span style="color: #a31515">"Address"</span>].ToString();<br /><br /> newEmployee.BirthDate =<br /><br /> DateTime.Parse(dr[<span style="color: #a31515">"BirthDate"</span>].ToString());<br /><br /> newEmployee.City = dr[<span style="color: #a31515">"City"</span>].ToString();<br /><br /> newEmployee.Country = dr[<span style="color: #a31515">"Country"</span>].ToString();<br /><br /> newEmployee.EmployeeID = Int32.Parse(dr[<span style="color: #a31515">"EmployeeID"</span>].ToString());<br /><br /> newEmployee.Extension = dr[<span style="color: #a31515">"Extension"</span>].ToString();<br /><br /> newEmployee.FirstName = dr[<span style="color: #a31515">"FirstName"</span>].ToString();<br /><br /> newEmployee.HireDate = DateTime.Parse(dr[<span style="color: #a31515">"HireDate"</span>].ToString());<br /><br /> newEmployee.LastName = dr[<span style="color: #a31515">"LastName"</span>].ToString();<br /><br /> newEmployee.PostalCode = dr[<span style="color: #a31515">"PostalCode"</span>].ToString();<br /><br /> newEmployee.Region = dr[<span style="color: #a31515">"Region"</span>].ToString();<br /><br /> newEmployee.ReportsTo = Int32.Parse(dr[<span style="color: #a31515">"ReportsTo"</span>].ToString());<br /><br /> newEmployee.Title = dr[<span style="color: #a31515">"Title"</span>].ToString();<br /><br /> newEmployee.TitleOfCourtesy = dr[<span style="color: #a31515">"TitleOfCourtesy"</span>].ToString();<br /><br /> pgbHardCodedConversion.Increment(1);<br /><br /> }<br /><br /> dr.Close();<br /><br /> System.DateTime stop = DateTime.Now;<br /><br /> System.TimeSpan ts = <span style="color: blue">new </span>TimeSpan(stop.Ticks - start.Ticks);<br /><br /> lblHardCodedConvertedTime.Text = <span style="color: #a31515">"Finished in "<br /><br /></span>+ ts.TotalMilliseconds + <span style="color: #a31515">" milliseconds"</span>;<br /><br />}</pre><br /><p>This has several obvious problems, but since it has to be re coded for every data reader, it will often be done poorly.<br /><p>Reflective Singleton is the same method outlined above, but without caching the<b> PropertyInfo </b>objects. Comparing the Reflective Singleton and the <b>ReflectiveBatch</b> shows the benefits of caching the <b>PropertyInfo</b> objects. I believe this to be a dramatic improvement.<br /><p>Hard-Coded without Conversion is the same as the <strong>HardCoded</strong> implementation but skips the extra <strong>ToString</strong> and parsing operations which should never be performed anyway.<br /><p>So why is the Reflective Batch implementation faster than the hard-coded version? Indexing into the DataReader by Name is also a slow operation. The Reflective implementation avoids this costly lookup.<br /><p>Undoubtedly, caching the indexes into the DataReader will change the results. More properties in the test object will change the results, and there are probably more optimizations that could be done to the hard-coded implementation.<br /><p>All of this reinforces the need to test in your own environment. Test for yourself. You may be surprised that a reflective solution probably will not ruin performance, and it will shorten your time to market.<br /><h3>Conclusion</h3><br /><p>Do not shy away from Reflection or any other technology just because of warnings that you hear. Always verify that the warnings apply to your project. Often times, they will not.<br /><p>If you are worried about performance concerns, don’t blindly follow someone else’s opinion. Test it with your own application.<br /><p>Above all don’t be afraid to learn something new!<br /><p><a href="http://www.simple-talk.com/author/nick-harrison/"><img alt="Nick Harrison" src="http://www.simple-talk.com/iwritefor/publishers/141.gif" align="left"></a><br /><p><strong>Author profile:</strong> <a href="http://www.simple-talk.com/author/nick-harrison/">Nick Harrison</a><br /><p>Nick Harrison is a Software Architect and .NET advocate in Columbia, SC. Nick has over 14 years experience in software developing, starting with Unix system programming and then progressing to the DotNet platform. You can read his blog as www.geekswithblogs.net/nharrison <br /><p><a href="http://www.simple-talk.com/author/nick-harrison/">Search for other articles by Nick Harrison</a></p><a href="http://11011.net/software/vspaste"></a> Anonymoushttp://www.blogger.com/profile/17445191350548842437noreply@blogger.comtag:blogger.com,1999:blog-1002597578696693985.post-71196369811457736772009-08-16T21:00:00.001-07:002009-08-16T21:00:25.043-07:00Free ebook on C# 3.0<p><a href="http://www.albahari.com/pocketref/"><img title="C# 3.0 Pocket Reference" height="122" alt="C# 3.0 Pocket Reference" src="http://www.red-gate.com/products/ants_performance_profiler/images/csharp3_ebook_cover.gif" width="74" border="0"></a> <p>This book is for busy programmers who want a succinct and yet readable guide to C# 3.0 and LINQ. <em><br>C# 3.0 Pocket Reference,</em> written by Joseph and Ben Albahari, tells you exactly what you need to know, without long introductions or bloated samples. Boost your C# expertise and keep ahead of your peers! <p> </p> <p>Boost your C# expertise:<br><a href="http://downloads.red-gate.com/ebooks/DotNet/Csharp3_Pocket_Reference_Second_Edition.zip">Download your free ebook here</a><br>and keep ahead of the game.</p> Anonymoushttp://www.blogger.com/profile/17445191350548842437noreply@blogger.comtag:blogger.com,1999:blog-1002597578696693985.post-43476830152118395992009-08-12T21:53:00.001-07:002009-08-13T00:46:16.731-07:00Custom Persister to store the state in a backend database<p>As requested in <a href="http://forums.asp.net/t/1292429.aspx">this post</a>, following is an example of a way to store viewstate in a database on the server instead of the hidden form field on the page. The form only maintains a guid that is used to retrieve saved viewstate from the DB. This can reduce bandwidth considerably if viewstate is something that you can't or don't want to disable completely. <p>The following code snippets are included: <ul> <li> <p><strong>SamplePageStatePersister.cs</strong> - custom mechanism for loading and saving viewstate for the page.</p> <li> <p><strong>SamplePageAdapter.cs</strong> - returns a new instance of SamplePageStatePersister (this is enlisted by the App.Browser file).</p> <li> <p><strong>App.Browser</strong> - must be added to the web project and tells the web application to use our custom page adapter.</p> <li> <p><strong>PageViewStateServices.cs</strong> - handles the interaction with the database via stored procedures to optimise performance.</p> <li> <p><strong>PageViewState.sql</strong> - creates the table to hold the view state and the stored procedures to interact with the database. You will need to apply the appropriate permissions.</p> <li> <p><strong>CleanupPageViewState.sql</strong> - deletes old view state to stop the database growing uncontrollably. Configure as a scheduled job and can be modified to extend or reduce the time window for view state being maintained in the database. Defaults to 4 hours.</p></li></ul> <p><strong>NOTE: </strong>This current example will not work if you use Server.Transfer and carry across the form data in the transfer. In this case, the view state ID will be carried across too and then subsequent back navigation will result in an error. <p><strong>SamplePageStatePersister.cs</strong><pre class="code"><span style="color: blue">using </span>System;<br /><span style="color: blue">using </span>System.Globalization;<br /><span style="color: blue">using </span>System.IO;<br /><span style="color: blue">using </span>System.Data;<br /><span style="color: blue">using </span>System.Configuration;<br /><span style="color: blue">using </span>System.Web;<br /><span style="color: blue">using </span>System.Web.Security;<br /><span style="color: blue">using </span>System.Web.UI;<br /><span style="color: blue">using </span>System.Web.UI.WebControls;<br /><span style="color: blue">using </span>System.Web.UI.WebControls.WebParts;<br /><span style="color: blue">using </span>System.Web.UI.HtmlControls;<br /><br /><span style="color: gray">/// <summary><br />/// </span><span style="color: green">---------------------------------------------------<br /></span><span style="color: gray">/// </span><span style="color: green">This class is the page state persister for the application.<br /></span><span style="color: gray">///<br />/// </span><span style="color: green">Created by Jason Hill on 26/6/2007.<br /></span><span style="color: gray">/// </span><span style="color: green">---------------------------------------------------<br /></span><span style="color: gray">/// </summary><br /></span><span style="color: blue">public class </span><span style="color: #2b91af">SamplePageStatePersister </span>: System.Web.UI.PageStatePersister<br />{<br /><br /> <span style="color: blue">private </span>Page _page;<br /><br /><span style="color: gray">/// </span><span style="color: green">---------------------------------------------------<br /> </span><span style="color: gray">/// <summary><br /> /// </span><span style="color: green">Constructor.<br /> </span><span style="color: gray">/// </summary><br /> /// <remarks><br /> /// <author></span><span style="color: green">jhill</span><span style="color: gray"></author><br /> /// <creation></span><span style="color: green">Wednesday, 30 May 2007</span><span style="color: gray"></creation><br /> /// </remarks><br /> /// <param name="page"></span><span style="color: green">Page.</span><span style="color: gray"></param><br /> /// </span><span style="color: green">-----------------------------------------------<br /> </span><span style="color: blue">public </span>SamplePageStatePersister(Page page)<br /> : <span style="color: blue">base</span>(page)<br /> {<br /> _page = page;<br /> }<br /><br /> <span style="color: gray">/// </span><span style="color: green">----------------------------------------------- </span><span style="color: gray">/// <summary><br /> /// </span><span style="color: green">Get the unique ID for the view state.<br /> </span><span style="color: gray">/// </summary><br /> /// <remarks><br /> /// <author></span><span style="color: green">jhill</span><span style="color: gray"></author><br /> /// <creation></span><span style="color: green">Wednesday, 30 May 2007</span><span style="color: gray"></creation><br /> /// </remarks><br /> /// </span><span style="color: green">----------------------------------------------- </span></pre><pre class="code"><span style="color: green"></span><span style="color: blue"> private </span><span style="color: #2b91af">Guid </span>GetViewStateID()<br /> {<br /> <span style="color: blue">string </span>viewStateKey;<br /><br /> <span style="color: green">// Get the ID from the request<br /> </span>viewStateKey = _page.Request[<span style="color: #a31515">"__VIEWSTATEID"</span>];<br /><br /> <span style="color: green">// Assign a new ID if we don't have one in the request<br /> </span><span style="color: blue">if </span>(<span style="color: blue">string</span>.IsNullOrEmpty(viewStateKey))<br /> {<br /> <span style="color: blue">return </span><span style="color: #2b91af">Guid</span>.NewGuid();<br /> }<br /><br /> <span style="color: green">// Use the ID from the request if it is valid, else assign a new ID<br /> </span><span style="color: blue">try<br /> </span>{<br /> <span style="color: blue">return new </span><span style="color: #2b91af">Guid</span>(viewStateKey);<br /> }<br /> <span style="color: blue">catch </span>(<span style="color: #2b91af">FormatException</span>)<br /> {<br /> <span style="color: blue">return </span><span style="color: #2b91af">Guid</span>.NewGuid();<br /> }<br /><br /> }<br /><br /> <span style="color: gray">/// </span><span style="color: green">-----------------------------------------------<br /> </span><span style="color: gray">/// <summary><br /> /// </span><span style="color: green">Load the view state from persistent medium.<br /> </span><span style="color: gray">/// </summary><br /> /// <remarks><br /> /// <author></span><span style="color: green">jhill</span><span style="color: gray"></author><br /> /// <creation></span><span style="color: green">Wednesday, 30 May 2007</span><span style="color: gray"></creation><br /> /// </remarks><br /> /// </span><span style="color: green">-----------------------------------------------<br /> </span><span style="color: blue">public override void </span>Load()<br /> {<br /><br /> <span style="color: green">// Load view state from DB<br /> </span><span style="color: blue">string </span>pageViewState = PageViewStateServices.GetByID(GetViewStateID());<br /><br /> <span style="color: blue">if </span>(pageViewState == <span style="color: blue">null</span>)<br /> {<br /> ViewState = <span style="color: blue">null</span>;<br /> ControlState = <span style="color: blue">null</span>;<br /> }<br /> <span style="color: blue">else<br /> </span>{<br /><br /> <span style="color: green">// Deserialize into a Pair of ViewState and ControlState objects<br /> </span>IStateFormatter formatter = StateFormatter;<br /> Pair statePair = (Pair)formatter.Deserialize(pageViewState);<br /><br /> <span style="color: green">// Update ViewState and ControlState<br /> </span>ViewState = statePair.First;<br /> ControlState = statePair.Second;<br /> }<br /><br /> }<br /><br /> <span style="color: gray">/// </span><span style="color: green">-----------------------------------------------<br /> </span><span style="color: gray">/// <summary><br /> /// </span><span style="color: green">Save the view state to persistent medium.<br /> </span><span style="color: gray">/// </summary><br /> /// <remarks><br /> /// <author></span><span style="color: green">jhill</span><span style="color: gray"></author><br /> /// <creation></span><span style="color: green">Wednesday, 30 May 2007</span><span style="color: gray"></creation><br /> /// </remarks><br /> /// <param name="viewState"></span><span style="color: green">View state to save.</span><span style="color: gray"></param><br /> /// </span><span style="color: green">-----------------------------------------------<br /> </span><span style="color: blue">public override void </span>Save()<br /> {<br /><br /> <span style="color: green">// Create a pair for ViewState and ControlState<br /> </span>Pair statePair = <span style="color: blue">new </span>Pair(ViewState, ControlState);<br /> IStateFormatter formatter = StateFormatter;<br /><br /> <span style="color: green">// Save the view state<br /> </span><span style="color: #2b91af">Guid </span>id = GetViewStateID();<br /> PageViewStateServices.Save(id, formatter.Serialize(statePair));<br /><br /> <span style="color: green">// Store the ID of the view state in a hidden form field<br /> </span>HtmlInputHidden control = _page.FindControl(<span style="color: #a31515">"__VIEWSTATEID"</span>) <span style="color: blue">as </span>HtmlInputHidden;<br /> <span style="color: blue">if </span>(control == <span style="color: blue">null</span>)<br /> {<br /> ScriptManager.RegisterHiddenField(_page, <span style="color: #a31515">"__VIEWSTATEID"</span>, id.ToString());<br /> }<br /> <span style="color: blue">else<br /> </span>{<br /> control.Value = id.ToString();<br /> }<br /><br /> }<br /><br /><br />}</pre><pre class="code"> </pre><pre><strong>SamplePageAdapter.cs</strong></pre><pre class="code"><span style="color: blue">using </span>System;<br /><span style="color: blue">using </span>System.Data;<br /><span style="color: blue">using </span>System.Configuration;<br /><span style="color: blue">using </span>System.Web;<br /><span style="color: blue">using </span>System.Web.Security;<br /><span style="color: blue">using </span>System.Web.UI;<br /><span style="color: blue">using </span>System.Web.UI.WebControls;<br /><span style="color: blue">using </span>System.Web.UI.WebControls.WebParts;<br /><span style="color: blue">using </span>System.Web.UI.HtmlControls;<br /><br /><span style="color: gray">/// <summary><br />/// </span><span style="color: green">-----------------------------------------------<br /></span><span style="color: gray">/// </span><span style="color: green">This class is the page adapter for the application.<br /></span><span style="color: gray">/// <br />/// </span><span style="color: green">Created by Jason Hill on 26/6/2007.<br /></span><span style="color: gray">/// </span><span style="color: green">-----------------------------------------------<br /></span><span style="color: gray">/// </summary><br /></span><span style="color: blue">public class </span><span style="color: #2b91af">SamplePageAdapter </span>: System.Web.UI.Adapters.PageAdapter<br />{<br /><br /> <span style="color: gray">/// </span><span style="color: green">-------------------------------------------<br /> </span><span style="color: gray">/// <summary><br /> /// </span><span style="color: green">Gets the state persister for the page.<br /> </span><span style="color: gray">/// </summary><br /> /// <remarks><br /> /// <author></span><span style="color: green">jhill</span><span style="color: gray"></author><br /> /// <creation></span><span style="color: green">Wednesday, 30 May 2007</span><span style="color: gray"></creation><br /> /// </remarks><br /> /// </span><span style="color: green">-------------------------------------------<br /> </span><span style="color: blue">public override </span>PageStatePersister GetStatePersister()<br /> {<br /> <span style="color: blue">return new </span>SamplePageStatePersister(Page);<br /> }<br /><br />}<br /></pre><br /><p><a href="http://11011.net/software/vspaste"></a> </p><pre><strong>App.Browser</strong></pre><pre class="code"><span style="color: blue"><</span><span style="color: #a31515">browsers</span><span style="color: blue">><br /> <</span><span style="color: #a31515">browser </span><span style="color: red">refID</span><span style="color: blue">=</span>"<span style="color: blue">Default</span>"<span style="color: blue">><br /> <</span><span style="color: #a31515">controlAdapters</span><span style="color: blue">><br /> <</span><span style="color: #a31515">adapter </span><span style="color: red">controlType</span><span style="color: blue">=</span>"<span style="color: blue">System.Web.UI.Page</span>" <span style="color: red">adapterType</span><span style="color: blue">=</span>"<span style="color: blue">SamplePageAdapter</span>" <span style="color: blue">/><br /> </</span><span style="color: #a31515">controlAdapters</span><span style="color: blue">><br /> </</span><span style="color: #a31515">browser</span><span style="color: blue">><br /></</span><span style="color: #a31515">browsers</span><span style="color: blue">></span></pre><br /><p><a href="http://11011.net/software/vspaste"></a> </p><br /><p><font face="Courier New"></font> </p><pre><pre><strong>PageViewStateServices.cs</strong></pre></pre><pre class="code"><span style="color: blue">using </span>System;<br /><span style="color: blue">using </span>System.Data;<br /><span style="color: blue">using </span>System.Data.SqlClient;<br /><span style="color: blue">using </span>System.Collections;<br /><span style="color: blue">using </span>System.Text;<br /><br /><span style="color: gray">/// <summary><br />/// </span><span style="color: green">--------------------------------------------------------<br /></span><span style="color: gray">/// </span><span style="color: green">This class provides services for handling page view state.<br /></span><span style="color: gray">/// <br />/// </span><span style="color: green">Created by Jason Hill on 26/6/2007.<br /></span><span style="color: gray">/// </span><span style="color: green">--------------------------------------------------------<br /></span><span style="color: gray">/// </summary><br /></span><span style="color: blue">public static class </span><span style="color: #2b91af">PageViewStateServices<br /></span>{<br /><br /> <span style="color: gray">/// </span><span style="color: green">----------------------------------------------------<br /> </span><span style="color: gray">/// <summary><br /> /// </span><span style="color: green">Get a page view state by ID.<br /> </span><span style="color: gray">/// </summary><br /> /// <remarks><br /> /// <author></span><span style="color: green">jhill</span><span style="color: gray"></author><br /> /// <creation></span><span style="color: green">Wednesday, 30 May 2007</span><span style="color: gray"></creation><br /> /// </remarks><br /> /// <param name="id"></span><span style="color: green">ID.</span><span style="color: gray"></param><br /> /// </span><span style="color: green">----------------------------------------------------<br /> </span><span style="color: blue">public static string </span>GetByID(<span style="color: #2b91af">Guid </span>id)<br /> {<br /><br /> <span style="color: blue">using </span>(<span style="color: #2b91af">SqlConnection </span>connection = <span style="color: blue">new </span><span style="color: #2b91af">SqlConnection</span>(Common.PageViewStateConnectionString))<br /> {<br /> connection.Open();<br /><br /> <span style="color: blue">try<br /> </span>{<br /> <span style="color: blue">using </span>(<span style="color: #2b91af">SqlCommand </span>command = connection.CreateCommand())<br /> {<br /> command.CommandType = <span style="color: #2b91af">CommandType</span>.StoredProcedure;<br /> command.CommandText = <span style="color: #a31515">"GetByID"</span>;<br /> command.Parameters.Add(<span style="color: blue">new </span><span style="color: #2b91af">SqlParameter</span>(<span style="color: #a31515">"@id"</span>, id));<br /> <span style="color: blue">return </span>(<span style="color: blue">string</span>)command.ExecuteScalar();<br /> }<br /> }<br /><br /> <span style="color: blue">finally<br /> </span>{<br /> connection.Close();<br /> }<br /> }<br /><br /> }<br /><br /> <span style="color: gray">/// </span><span style="color: green">----------------------------------------------<br /> </span><span style="color: gray">/// <summary><br /> /// </span><span style="color: green">Save the view state.<br /> </span><span style="color: gray">/// </summary><br /> /// <remarks><br /> /// <author></span><span style="color: green">jhill</span><span style="color: gray"></author><br /> /// <creation></span><span style="color: green">Wednesday, 30 May 2007</span><span style="color: gray"></creation><br /> /// </remarks><br /> /// <param name="id"></span><span style="color: green">Unique ID.</span><span style="color: gray"></param><br /> /// <param name="value"></span><span style="color: green">View state value.</span><span style="color: gray"></param><br /> /// </span><span style="color: green">----------------------------------------------<br /> </span><span style="color: blue">public static void </span>Save(<span style="color: #2b91af">Guid </span>id, <span style="color: blue">string </span>value)<br /> {<br /><br /> <span style="color: blue">using </span>(<span style="color: #2b91af">SqlConnection </span>connection = <span style="color: blue">new </span><span style="color: #2b91af">SqlConnection</span>(Common.PageViewStateConnectionString))<br /> {<br /> connection.Open();<br /><br /> <span style="color: blue">try<br /> </span>{<br /><br /> <span style="color: blue">using </span>(<span style="color: #2b91af">SqlCommand </span>command = connection.CreateCommand())<br /> {<br /> command.CommandType = <span style="color: #2b91af">CommandType</span>.StoredProcedure;<br /> command.CommandText = <span style="color: #a31515">"SaveViewState"</span>;<br /> command.Parameters.Add(<span style="color: blue">new </span><span style="color: #2b91af">SqlParameter</span>(<span style="color: #a31515">"@id"</span>, id));<br /> command.Parameters.Add(<span style="color: blue">new </span><span style="color: #2b91af">SqlParameter</span>(<span style="color: #a31515">"@value"</span>, value));<br /> command.ExecuteNonQuery();<br /> }<br /><br /> }<br /><br /> <span style="color: blue">finally<br /> </span>{<br /> connection.Close();<br /> }<br /> }<br /><br /> }<br /><br />}<br /></pre><br /><p><a href="http://11011.net/software/vspaste"></a> </p><br /><p> </p><pre><pre><pre><strong>PageViewState.sql</strong></pre><pre> </pre><pre><div class="csharpcode"><pre class="alt"><span class="lnum"> 1: </span><span class="kwrd">SET</span> ANSI_NULLS <span class="kwrd">ON</span></pre><pre><span class="lnum"> 2: </span><span class="kwrd">GO</span></pre><pre class="alt"><span class="lnum"> 3: </span><span class="kwrd">SET</span> QUOTED_IDENTIFIER <span class="kwrd">ON</span></pre><pre><span class="lnum"> 4: </span><span class="kwrd">GO</span></pre><pre class="alt"><span class="lnum"> 5: </span><span class="kwrd">CREATE</span> <span class="kwrd">TABLE</span> [dbo].[PageViewState](</pre><pre><span class="lnum"> 6: </span> [ID] [uniqueidentifier] <span class="kwrd">NOT</span> <span class="kwrd">NULL</span>,</pre><pre class="alt"><span class="lnum"> 7: </span> [<span class="kwrd">Value</span>] [text] <span class="kwrd">NOT</span> <span class="kwrd">NULL</span>,</pre><pre><span class="lnum"> 8: </span> [LastUpdatedOn] [datetime] <span class="kwrd">NOT</span> <span class="kwrd">NULL</span>,</pre><pre class="alt"><span class="lnum"> 9: </span> <span class="kwrd">CONSTRAINT</span> [PK_PageViewState] <span class="kwrd">PRIMARY</span> <span class="kwrd">KEY</span> <span class="kwrd">CLUSTERED</span> </pre><pre><span class="lnum"> 10: </span>(</pre><pre class="alt"><span class="lnum"> 11: </span> [ID] <span class="kwrd">ASC</span></pre><pre><span class="lnum"> 12: </span>)<span class="kwrd">WITH</span> (PAD_INDEX = <span class="kwrd">OFF</span>, STATISTICS_NORECOMPUTE = <span class="kwrd">OFF</span>, IGNORE_DUP_KEY = <span class="kwrd">OFF</span>, ALLOW_ROW_LOCKS = <span class="kwrd">ON</span>, ALLOW_PAGE_LOCKS = <span class="kwrd">ON</span>) <span class="kwrd">ON</span> [<span class="kwrd">PRIMARY</span>]</pre><pre class="alt"><span class="lnum"> 13: </span>) <span class="kwrd">ON</span> [<span class="kwrd">PRIMARY</span>] TEXTIMAGE_ON [<span class="kwrd">PRIMARY</span>]</pre><pre><span class="lnum"> 14: </span><span class="kwrd">GO</span></pre><pre class="alt"><span class="lnum"> 15: </span> </pre><pre><span class="lnum"> 16: </span><span class="kwrd">SET</span> ANSI_NULLS <span class="kwrd">ON</span></pre><pre class="alt"><span class="lnum"> 17: </span><span class="kwrd">GO</span></pre><pre><span class="lnum"> 18: </span><span class="kwrd">SET</span> QUOTED_IDENTIFIER <span class="kwrd">ON</span></pre><pre class="alt"><span class="lnum"> 19: </span><span class="kwrd">GO</span></pre><pre><span class="lnum"> 20: </span><span class="kwrd">CREATE</span> <span class="kwrd">PROCEDURE</span> [dbo].[GetByID] </pre><pre class="alt"><span class="lnum"> 21: </span> @id uniqueidentifier </pre><pre><span class="lnum"> 22: </span><span class="kwrd">AS</span></pre><pre class="alt"><span class="lnum"> 23: </span><span class="kwrd">BEGIN</span></pre><pre><span class="lnum"> 24: </span> <span class="kwrd">SET</span> NOCOUNT <span class="kwrd">ON</span>;</pre><pre class="alt"><span class="lnum"> 25: </span> </pre><pre><span class="lnum"> 26: </span> <span class="kwrd">select</span> <span class="kwrd">Value</span></pre><pre class="alt"><span class="lnum"> 27: </span> <span class="kwrd">from</span> PageViewState</pre><pre><span class="lnum"> 28: </span> <span class="kwrd">where</span> ID = @id</pre><pre class="alt"><span class="lnum"> 29: </span> </pre><pre><span class="lnum"> 30: </span><span class="kwrd">END</span></pre><pre class="alt"><span class="lnum"> 31: </span> </pre><pre><span class="lnum"> 32: </span><span class="kwrd">GO</span></pre><pre class="alt"><span class="lnum"> 33: </span><span class="kwrd">SET</span> ANSI_NULLS <span class="kwrd">ON</span></pre><pre><span class="lnum"> 34: </span><span class="kwrd">GO</span></pre><pre class="alt"><span class="lnum"> 35: </span><span class="kwrd">SET</span> QUOTED_IDENTIFIER <span class="kwrd">ON</span></pre><pre><span class="lnum"> 36: </span><span class="kwrd">GO</span></pre><pre class="alt"><span class="lnum"> 37: </span><span class="kwrd">CREATE</span> <span class="kwrd">PROCEDURE</span> [dbo].[SaveViewState]</pre><pre><span class="lnum"> 38: </span> @id uniqueidentifier, </pre><pre class="alt"><span class="lnum"> 39: </span> @<span class="kwrd">value</span> text</pre><pre><span class="lnum"> 40: </span><span class="kwrd">AS</span></pre><pre class="alt"><span class="lnum"> 41: </span><span class="kwrd">BEGIN</span></pre><pre><span class="lnum"> 42: </span> <span class="kwrd">SET</span> NOCOUNT <span class="kwrd">ON</span>;</pre><pre class="alt"><span class="lnum"> 43: </span> </pre><pre><span class="lnum"> 44: </span> <span class="kwrd">if</span> (<span class="kwrd">exists</span>(<span class="kwrd">select</span> ID <span class="kwrd">from</span> PageViewState <span class="kwrd">where</span> ID = @id))</pre><pre class="alt"><span class="lnum"> 45: </span> <span class="kwrd">update</span> PageViewState</pre><pre><span class="lnum"> 46: </span> <span class="kwrd">set</span> <span class="kwrd">Value</span> = @<span class="kwrd">value</span>, LastUpdatedOn = getdate()</pre><pre class="alt"><span class="lnum"> 47: </span> <span class="kwrd">where</span> ID = @id</pre><pre><span class="lnum"> 48: </span> <span class="kwrd">else</span></pre><pre class="alt"><span class="lnum"> 49: </span> insert <span class="kwrd">into</span> PageViewState</pre><pre><span class="lnum"> 50: </span> (ID, <span class="kwrd">Value</span>, LastUpdatedOn)</pre><pre class="alt"><span class="lnum"> 51: </span> <span class="kwrd">values</span> (@id, @<span class="kwrd">value</span>, getdate())</pre><pre><span class="lnum"> 52: </span> </pre><pre class="alt"><span class="lnum"> 53: </span><span class="kwrd">END</span></pre><pre><span class="lnum"> 54: </span> </pre><pre class="alt"><span class="lnum"> 55: </span> </pre></div><style type="text/css">.csharpcode, .csharpcode pre<br />{<br /> font-size: small;<br /> color: black;<br /> font-family: consolas, "Courier New", courier, monospace;<br /> background-color: #ffffff;<br /> /*white-space: pre;*/<br />}<br />.csharpcode pre { margin: 0em; }<br />.csharpcode .rem { color: #008000; }<br />.csharpcode .kwrd { color: #0000ff; }<br />.csharpcode .str { color: #006080; }<br />.csharpcode .op { color: #0000c0; }<br />.csharpcode .preproc { color: #cc6633; }<br />.csharpcode .asp { background-color: #ffff00; }<br />.csharpcode .html { color: #800000; }<br />.csharpcode .attr { color: #ff0000; }<br />.csharpcode .alt <br />{<br /> background-color: #f4f4f4;<br /> width: 100%;<br /> margin: 0em;<br />}<br />.csharpcode .lnum { color: #606060; }<br /></style><pre><strong> </strong></pre><pre><strong> </strong></pre><pre><strong>CleanupPageViewState.sql</strong></pre><pre> </pre><pre><div class="csharpcode"><pre class="alt"><span class="lnum"> 1: </span><span class="kwrd">delete</span> <span class="kwrd">from</span> PageViewState</pre><pre><span class="lnum"> 2: </span><span class="kwrd">where</span> LastUpdatedOn < dateadd(<span class="kwrd">minute</span>, -240, <span class="kwrd">current_timestamp</span>)</pre></div><style type="text/css">.csharpcode, .csharpcode pre<br />{<br /> font-size: small;<br /> color: black;<br /> font-family: consolas, "Courier New", courier, monospace;<br /> background-color: #ffffff;<br /> /*white-space: pre;*/<br />}<br />.csharpcode pre { margin: 0em; }<br />.csharpcode .rem { color: #008000; }<br />.csharpcode .kwrd { color: #0000ff; }<br />.csharpcode .str { color: #006080; }<br />.csharpcode .op { color: #0000c0; }<br />.csharpcode .preproc { color: #cc6633; }<br />.csharpcode .asp { background-color: #ffff00; }<br />.csharpcode .html { color: #800000; }<br />.csharpcode .attr { color: #ff0000; }<br />.csharpcode .alt <br />{<br /> background-color: #f4f4f4;<br /> width: 100%;<br /> margin: 0em;<br />}<br />.csharpcode .lnum { color: #606060; }<br /></style></pre></pre></pre></pre><br /><p> </p><br /><p>Original post can be found <a href="http://forums.asp.net/t/1293397.aspx" target="_blank">here</a></p><pre><strong></strong> </pre> Anonymoushttp://www.blogger.com/profile/17445191350548842437noreply@blogger.comtag:blogger.com,1999:blog-1002597578696693985.post-48357850706229765282009-08-10T23:04:00.001-07:002009-08-10T23:04:15.746-07:00.NET: Getting the Path of the Executing Assembly<p>To retrieve the path of the executing assembly (the VB 6.0 equivalent of App.Path), use the following code:</p><pre class="code">[C#]<br /><span style="color: #2b91af">String </span>strPath = System.IO.<span style="color: #2b91af">Path</span>.GetDirectoryName(<br /> System.Reflection.<span style="color: #2b91af">Assembly</span>.GetExecutingAssembly().CodeBase);<br /><br />[Visual Basic]<br />Dim strPath As String = System.IO.<span style="color: #2b91af">Path</span>.GetDirectoryName( _<br /> System.Reflection.<span style="color: #2b91af">Assembly</span>.GetExecutingAssembly().CodeBase)<br /></pre><br /><p><a href="http://11011.net/software/vspaste"></a> </p><br /><p>Original post can be found <a href="http://www.xoc.net/works/tips/path.asp" target="_blank">here</a></p> Anonymoushttp://www.blogger.com/profile/17445191350548842437noreply@blogger.comtag:blogger.com,1999:blog-1002597578696693985.post-78233264023812263292009-08-10T23:01:00.001-07:002009-08-10T23:05:02.565-07:00.NET: Retrieving Assembly Attributes<p>To retrieve the value set in the Assembly Attributes in the AssemblyInfo.cs or AssemblyInfo.vb file, use the code below. The example shows retrieving the AssemblyDescription attribute.</p> <p> </p><pre class="code">[C#]<br /><span style="color: blue">private static readonly string </span>strAssemblyDescription =<br /> ((AssemblyDescriptionAttribute) <br /> Assembly.GetExecutingAssembly().GetCustomAttributes(<br /> <span style="color: blue">typeof</span>(AssemblyDescriptionAttribute), <span style="color: blue">false</span>)[0]).Description;<br /><br />[Visual Basic]<br /><span style="color: blue">Private ReadOnly </span>strAssemblyDescription As String = _<br /> CType([Assembly].GetExecutingAssembly().GetCustomAttributes( _<br /> GetT<span style="color: blue">ype</span>(AssemblyDescriptionAttribute), F<span style="color: blue">alse</span>), _<br /> AssemblyDescriptionAttribute())(0).Description</pre><a href="http://11011.net/software/vspaste"></a><br /><p> </p><br /><p>Original post can be found <a href="http://www.xoc.net/works/tips/assembly-attributes.asp" target="_blank">here</a></p> Anonymoushttp://www.blogger.com/profile/17445191350548842437noreply@blogger.comtag:blogger.com,1999:blog-1002597578696693985.post-58438821428635063692009-08-05T23:46:00.001-07:002009-08-13T00:49:35.282-07:00SQL SERVER – Get Time in Hour:Minute Format from a Datetime – Get Date Part Only from Datetime<p>I have seen scores of expert developers getting perplexed with SQL Server in finding time only from datetime datatype. Let us have a quick glance look at the solution. <p><strong>SQL Server 2000/2005</strong> <div class="csharpcode"><pre class="alt"><span class="lnum"> 1: </span><span class="kwrd">SELECT</span></pre><pre><span class="lnum"> 2: </span><span class="kwrd">CONVERT</span>(<span class="kwrd">VARCHAR</span>(8),GETDATE(),108) <span class="kwrd">AS</span> HourMinuteSecond,</pre><pre class="alt"><span class="lnum"> 3: </span><span class="kwrd">CONVERT</span>(<span class="kwrd">VARCHAR</span>(8),GETDATE(),101) <span class="kwrd">AS</span> DateOnly</pre><pre><span class="lnum"> 4: </span>GO</pre></div><br /><style type="text/css">.csharpcode, .csharpcode pre<br />{<br /> font-size: small;<br /> color: black;<br /> font-family: consolas, "Courier New", courier, monospace;<br /> background-color: #ffffff;<br /> /*white-space: pre;*/<br />}<br />.csharpcode pre { margin: 0em; }<br />.csharpcode .rem { color: #008000; }<br />.csharpcode .kwrd { color: #0000ff; }<br />.csharpcode .str { color: #006080; }<br />.csharpcode .op { color: #0000c0; }<br />.csharpcode .preproc { color: #cc6633; }<br />.csharpcode .asp { background-color: #ffff00; }<br />.csharpcode .html { color: #800000; }<br />.csharpcode .attr { color: #ff0000; }<br />.csharpcode .alt <br />{<br /> background-color: #f4f4f4;<br /> width: 100%;<br /> margin: 0em;<br />}<br />.csharpcode .lnum { color: #606060; }<br /></style><br /><a href="http://11011.net/software/vspaste"></a><br /><p><img height="188" alt="" src="http://www.pinaldave.com/bimg/datetime2005.jpg" width="489"> <br /><p><strong>SQL Server 2008</strong><br /><div class="csharpcode"><pre class="alt"><span class="lnum"> 1: </span><span class="kwrd">SELECT</span></pre><pre><span class="lnum"> 2: </span><span class="kwrd">CONVERT</span>(<span class="kwrd">TIME</span>,GETDATE()) <span class="kwrd">AS</span> HourMinuteSecond,</pre><pre class="alt"><span class="lnum"> 3: </span><span class="kwrd">CONVERT</span>(<span class="kwrd">DATE</span>,GETDATE(),101) <span class="kwrd">AS</span> DateOnly</pre><pre><span class="lnum"> 4: </span>GO</pre></div><br /><style type="text/css">.csharpcode, .csharpcode pre<br />{<br /> font-size: small;<br /> color: black;<br /> font-family: consolas, "Courier New", courier, monospace;<br /> background-color: #ffffff;<br /> /*white-space: pre;*/<br />}<br />.csharpcode pre { margin: 0em; }<br />.csharpcode .rem { color: #008000; }<br />.csharpcode .kwrd { color: #0000ff; }<br />.csharpcode .str { color: #006080; }<br />.csharpcode .op { color: #0000c0; }<br />.csharpcode .preproc { color: #cc6633; }<br />.csharpcode .asp { background-color: #ffff00; }<br />.csharpcode .html { color: #800000; }<br />.csharpcode .attr { color: #ff0000; }<br />.csharpcode .alt <br />{<br /> background-color: #f4f4f4;<br /> width: 100%;<br /> margin: 0em;<br />}<br />.csharpcode .lnum { color: #606060; }<br /></style><br /><a href="http://11011.net/software/vspaste"></a><br /><p><img height="184" alt="" src="http://www.pinaldave.com/bimg/datetime2008.jpg" width="413"> <br /><p>I hope the above solution is clear to you all. <br /><p>Reference : <strong>Pinal Dave (<a href="http://blog.sqlauthority.com/">http://blog.SQLAuthority.com</a>)</strong></p> Anonymoushttp://www.blogger.com/profile/17445191350548842437noreply@blogger.comtag:blogger.com,1999:blog-1002597578696693985.post-22818247425382940482009-07-30T06:20:00.001-07:002009-08-13T00:52:53.635-07:00Setting up Visual Studio Intellisense for jQuery<h4>by <a href="http://www.learningjquery.com/2009/07/setting-up-visual-studio-intellisense-for-jquery">Ralph Whitbeck</a></h4> <p>In September 2008, at the jQuery Conference, it was announced that Microsoft would be shipping its upcoming releases of Visual Studio with jQuery built in. They would not fork or change the jQuery code but ship it as is. Microsoft also announced that they would distribute IntelliSense-annotated documentation JavaScript files for Visual Studio 2008 that developers can reference in their files to enable IntelliSense for jQuery. The following instructions will help you get started using this tool to make writing jQuery scripts faster than ever. <h6>Setting up Your Files for jQuery IntelliSense</h6> <p>First, set up jQuery on your page by downloading the latest version from the <a href="http://docs.jquery.com/Downloading_jQuery">jQuery site</a>. <p>Next, you will need to download the <a href="http://docs.jquery.com/Downloading_jQuery">jQuery Documentation file from the jQuery site</a>. <p><img height="132" alt="download documentation" src="http://www.learningjquery.com/wp-content/uploads/vs-download.png" width="379"> <p>Download the files and add them to your project. <h6>IntelliSense in external JavaScript files</h6> <p>At the top of the JavaScript file in which you would like to have jQuery IntelliSense enabled, you will need to add a line to reference the documentation file:<pre><code><strong>/// <reference path="jquery-1.3.2-vsdoc2.js" /></strong></code></pre><br /><h6>IntelliSense inline on your ASPX page</h6><br /><p>There are a couple of scenarios that may affect if you include a reference to the VSDOC file or not. If in doubt, just add a reference to the documentation file. <br /><p>If you are linking to jQuery by the <a href="http://code.google.com/apis/ajaxlibs/">Google Code AJAX Library</a> or are linking to jQuery from anywhere outside of your project you will need to reference the documentation file. <br /><p>From each ASPX page you want jQuery IntelliSense you’ll want to call the reference within a server-side conditional statement so that the documentation file will still load in Visual Studio but will not load at run-time. Add the following after your jQuery declaration: <br /><p><a href="http://www.learningjquery.com/2009/07/setting-up-visual-studio-intellisense-for-jquery#">PLAIN TEXT</a> <br /><p>ASP: <br /><div class="csharpcode"><pre class="alt"><span class="lnum"> 1: </span><script src=<span class="str">"http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"</span> type=<span class="str">"text/javascript"</span>></script></pre><pre><span class="lnum"> 2: </span> </pre><pre class="alt"><span class="lnum"> 3: </span><% <span class="kwrd">if</span> (<span class="kwrd">false</span>) { %></pre><pre><span class="lnum"> 4: </span> </pre><pre class="alt"><span class="lnum"> 5: </span> <script type=<span class="str">"text/javascript"</span> src=<span class="str">"jquery-1.3.2-vsdoc2.js"</span>></script></pre><pre><span class="lnum"> 6: </span> </pre><pre class="alt"><span class="lnum"> 7: </span><% } %></pre></div><br /><style type="text/css">.csharpcode, .csharpcode pre<br />{<br /> font-size: small;<br /> color: black;<br /> font-family: consolas, "Courier New", courier, monospace;<br /> background-color: #ffffff;<br /> /*white-space: pre;*/<br />}<br />.csharpcode pre { margin: 0em; }<br />.csharpcode .rem { color: #008000; }<br />.csharpcode .kwrd { color: #0000ff; }<br />.csharpcode .str { color: #006080; }<br />.csharpcode .op { color: #0000c0; }<br />.csharpcode .preproc { color: #cc6633; }<br />.csharpcode .asp { background-color: #ffff00; }<br />.csharpcode .html { color: #800000; }<br />.csharpcode .attr { color: #ff0000; }<br />.csharpcode .alt <br />{<br /> background-color: #f4f4f4;<br /> width: 100%;<br /> margin: 0em;<br />}<br />.csharpcode .lnum { color: #606060; }<br /></style><br /><br /><p>If you downloaded jQuery and saved it to your project Visual Studio will look for the vsdoc.js file automatically if the following conditions are met. <br /><p>You've downloaded and installed the <a href="http://blogs.msdn.com/webdevtools/archive/2008/11/07/hotfix-to-enable-vsdoc-js-intellisense-doc-files-is-now-available.aspx">hotfix</a> for Visual Studio. <br /><p>jQuery and the documentation file need to be named the same with the exception that the documentation file end with -vsdoc.js. So when you add jQuery to your project make sure to rename them similarly. For instance, <strong>jquery-1.3.2</strong>.js is your jQuery library, Visual Studio will look for the documentation file at <strong>jquery-1.3.2</strong>-vsdoc.js and load it. <br /><p>(Note: the jQuery 1.3.2 documentation file is named jquery-1.3.2-vsdoc2.js on the Download page so make sure you take out the 2 so that the file will be found by Visual Studio) <br /><p>If you can't meet these conditions you'll need to reference the documentation file as shown above. <br /><p>To test to make sure the documentation file loaded correctly, you can type <code>$(</code> and you should be presented with some documentation. <br /><p><img height="96" alt="test IntelliSense" src="http://www.learningjquery.com/wp-content/uploads/vs-test.png" width="576"> <br /><p>Additionally, you can type in <code>$(document).r</code> and you will be presented with a drop down of available options to choose from, one being "ready." <br /><p><img height="169" alt="test with document ready" src="http://www.learningjquery.com/wp-content/uploads/vs-docready.png" width="541"> <br /><p>Now as you write your jQuery code, you'll be helped along by seeing what methods and properties are available to you. <br /><h6>Related Links</h6><br /><ul><br /><li><a href="http://blogs.msdn.com/webdevtools/archive/2008/10/28/rich-IntelliSense-for-jquery.aspx">Rich IntelliSense for jQuery</a> <br /><li><a href="http://weblogs.asp.net/scottgu/archive/2008/09/28/jquery-and-microsoft.aspx">jQuery and Microsoft</a> <br /><li><a href="http://blog.jquery.com/2008/09/28/jquery-microsoft-nokia/">jQuery, Microsoft and Nokia</a> <br /><li><a href="http://blogs.msdn.com/webdevtools/archive/2008/11/07/hotfix-to-enable-vsdoc-js-intellisense-doc-files-is-now-available.aspx">VS2008 SP1 Hotfix to Support "-vsdoc.js" IntelliSense Doc Files</a></li></ul><br /><h6>Update</h6><br /><p>I've updated the post to reflect the hotfix for Visual Studio which enables Visual Studio to automatically load the documentation file for inline jQuery on ASPX pages if it's named similarly to the jQuery file. Thanks to Dave Ward for pointing this out in the comments. <br /><p><a href="http://www.learningjquery.com/scripts-used-on-this-site">Scripts Used on This Site</a> <br /><p> <p>Original post can be found <a href="http://www.learningjquery.com/2009/07/setting-up-visual-studio-intellisense-for-jquery" target="_blank">here...</a></p> Anonymoushttp://www.blogger.com/profile/17445191350548842437noreply@blogger.comtag:blogger.com,1999:blog-1002597578696693985.post-18397095540131272572009-07-29T22:12:00.000-07:002009-07-28T22:15:50.416-07:00Web Content Accessibility Guidelines (WCAG) 2.0<h4>Abstract</h4> <p>Web Content Accessibility Guidelines (WCAG) 2.0 covers a wide range of recommendations for making Web content more accessible. Following these guidelines will make content accessible to a wider range of people with disabilities, including blindness and low vision, deafness and hearing loss, learning disabilities, cognitive limitations, limited movement, speech disabilities, photosensitivity and combinations of these. Following these guidelines will also often make your Web content more usable to users in general. <p>WCAG 2.0 success criteria are written as testable statements that are not technology-specific. Guidance about satisfying the success criteria in specific technologies, as well as general information about interpreting the success criteria, is provided in separate documents. See <a href="http://www.w3.org/WAI/intro/wcag.php">Web Content Accessibility Guidelines (WCAG) Overview</a> for an introduction and links to WCAG technical and educational material. <p>WCAG 2.0 succeeds <a href="http://www.w3.org/TR/WCAG10/">Web Content Accessibility Guidelines 1.0</a> <a href="http://www.w3.org/TR/WCAG20/#WCAG10">[WCAG10]</a>, which was published as a W3C Recommendation May 1999. Although it is possible to conform either to WCAG 1.0 or to WCAG 2.0 (or both), the W3C recommends that new and updated content use WCAG 2.0. The W3C also recommends that Web accessibility policies reference WCAG 2.0. <p> </p> <p>read <a href="http://www.w3.org/TR/WCAG20/" target="_blank">more...</a></p> Anonymoushttp://www.blogger.com/profile/17445191350548842437noreply@blogger.com