<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>Rowan Beach - Steve's blog</title>
    <link>http://www.rowanbeach.com/</link>
    <description>.NET, C#, Sql Server</description>
    <language>en-us</language>
    <copyright>Steve Willcock</copyright>
    <lastBuildDate>Sat, 23 Jan 2010 19:40:26 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.3.9074.18820</generator>
    <managingEditor>steve@rowanbeach.com</managingEditor>
    <webMaster>steve@rowanbeach.com</webMaster>
    <item>
      <trackback:ping>http://www.rowanbeach.com/Trackback.aspx?guid=3ab416c4-cf3e-49b5-8821-0466f819e3f1</trackback:ping>
      <pingback:server>http://www.rowanbeach.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.rowanbeach.com/PermaLink,guid,3ab416c4-cf3e-49b5-8821-0466f819e3f1.aspx</pingback:target>
      <dc:creator>Steve</dc:creator>
      <wfw:comment>http://www.rowanbeach.com/CommentView,guid,3ab416c4-cf3e-49b5-8821-0466f819e3f1.aspx</wfw:comment>
      <wfw:commentRss>http://www.rowanbeach.com/SyndicationService.asmx/GetEntryCommentsRss?guid=3ab416c4-cf3e-49b5-8821-0466f819e3f1</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
        </p>
        <p>
It looks like the ASP.NET MVC team have changed the way model validation will work
for the upcoming version 2 of the MVC framework. This was totally in response to user
feedback on Twitter and various blog posts, and while it’s a good change in itself,
it’s pretty remarkable for a couple of reasons.
</p>
        <p>
1 – It shows Microsoft are really listening to people these days
</p>
        <p>
2 – The change seems to have been implemented in less than a week – even if it’s a
fairly simple change, that’s still a pretty good turnaround time for what is a fairly
major component of ASP.NET MVC 2.
</p>
        <p>
Here’s Scott Gu’s post <a title="http://twitter.com/scottgu/statuses/8097596794" href="http://twitter.com/scottgu/statuses/8097596794">http://twitter.com/scottgu/statuses/8097596794</a></p>
        <p>
          <a href="http://www.rowanbeach.com/content/binary/WindowsLiveWriter/ASP.NETMVC2Validationchanges_114A7/scott-gu-twitter-mvc-change_2.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="scott-gu-twitter-mvc-change" border="0" alt="scott-gu-twitter-mvc-change" src="http://www.rowanbeach.com/content/binary/WindowsLiveWriter/ASP.NETMVC2Validationchanges_114A7/scott-gu-twitter-mvc-change_thumb.png" width="441" height="252" />
          </a>
        </p>
        <p>
And here’s Ayende’s take on the original issue <a title="http://ayende.com/Blog/archive/2010/01/21/when-the-design-violates-the-principle-of-least-surprise-you.aspx" href="http://ayende.com/Blog/archive/2010/01/21/when-the-design-violates-the-principle-of-least-surprise-you.aspx">http://ayende.com/Blog/archive/2010/01/21/when-the-design-violates-the-principle-of-least-surprise-you.aspx</a> which,
as (almost) always, seems to make a lot of sense.
</p>
        <img width="0" height="0" src="http://www.rowanbeach.com/aggbug.ashx?id=3ab416c4-cf3e-49b5-8821-0466f819e3f1" />
      </body>
      <title>ASP.NET MVC 2 Validation changes</title>
      <guid isPermaLink="false">http://www.rowanbeach.com/PermaLink,guid,3ab416c4-cf3e-49b5-8821-0466f819e3f1.aspx</guid>
      <link>http://www.rowanbeach.com/2010/01/23/ASPNETMVC2ValidationChanges.aspx</link>
      <pubDate>Sat, 23 Jan 2010 19:40:26 GMT</pubDate>
      <description>&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
It looks like the ASP.NET MVC team have changed the way model validation will work
for the upcoming version 2 of the MVC framework. This was totally in response to user
feedback on Twitter and various blog posts, and while it’s a good change in itself,
it’s pretty remarkable for a couple of reasons.
&lt;/p&gt;
&lt;p&gt;
1 – It shows Microsoft are really listening to people these days
&lt;/p&gt;
&lt;p&gt;
2 – The change seems to have been implemented in less than a week – even if it’s a
fairly simple change, that’s still a pretty good turnaround time for what is a fairly
major component of ASP.NET MVC 2.
&lt;/p&gt;
&lt;p&gt;
Here’s Scott Gu’s post &lt;a title="http://twitter.com/scottgu/statuses/8097596794" href="http://twitter.com/scottgu/statuses/8097596794"&gt;http://twitter.com/scottgu/statuses/8097596794&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.rowanbeach.com/content/binary/WindowsLiveWriter/ASP.NETMVC2Validationchanges_114A7/scott-gu-twitter-mvc-change_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="scott-gu-twitter-mvc-change" border="0" alt="scott-gu-twitter-mvc-change" src="http://www.rowanbeach.com/content/binary/WindowsLiveWriter/ASP.NETMVC2Validationchanges_114A7/scott-gu-twitter-mvc-change_thumb.png" width="441" height="252"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
And here’s Ayende’s take on the original issue &lt;a title="http://ayende.com/Blog/archive/2010/01/21/when-the-design-violates-the-principle-of-least-surprise-you.aspx" href="http://ayende.com/Blog/archive/2010/01/21/when-the-design-violates-the-principle-of-least-surprise-you.aspx"&gt;http://ayende.com/Blog/archive/2010/01/21/when-the-design-violates-the-principle-of-least-surprise-you.aspx&lt;/a&gt; which,
as (almost) always, seems to make a lot of sense.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.rowanbeach.com/aggbug.ashx?id=3ab416c4-cf3e-49b5-8821-0466f819e3f1" /&gt;</description>
      <comments>http://www.rowanbeach.com/CommentView,guid,3ab416c4-cf3e-49b5-8821-0466f819e3f1.aspx</comments>
      <category>ASP.NET MVC</category>
      <category>Validation</category>
    </item>
    <item>
      <trackback:ping>http://www.rowanbeach.com/Trackback.aspx?guid=5e8c8564-d574-49bf-98ca-a533b16e07a7</trackback:ping>
      <pingback:server>http://www.rowanbeach.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.rowanbeach.com/PermaLink,guid,5e8c8564-d574-49bf-98ca-a533b16e07a7.aspx</pingback:target>
      <dc:creator>Steve</dc:creator>
      <wfw:comment>http://www.rowanbeach.com/CommentView,guid,5e8c8564-d574-49bf-98ca-a533b16e07a7.aspx</wfw:comment>
      <wfw:commentRss>http://www.rowanbeach.com/SyndicationService.asmx/GetEntryCommentsRss?guid=5e8c8564-d574-49bf-98ca-a533b16e07a7</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I bought Expression Studio 3 a while back – it’s really not bad at all. Expression
design is not up to Adobe Illustrator standards by any means but for my purposes it’s
very serviceable. Personally the only feature I really found myself wishing for after
using Illustrator is the gradient mesh. Fingers crossed for gradient mesh support
in Expression Design version 4…
</p>
        <p>
I designed the new Rowan Beach logo and web site graphics with Expression Design –
it only took a few hours to get something looking half decent even though I was pretty
new to the software (and some would say challenged from a design perspective) – the
software is a lot simpler than Illustrator which makes it faster to pick up and use.
Partly that’s because it doesn’t have the same feature set as Illustrator but I think
it’s also because it’s new software with the benefit of a clean, fresh UI design.
</p>
        <p>
          <a href="http://www.rowanbeach.com/content/binary/WindowsLiveWriter/ExpressionStudio_140EC/ExpressionDesign_2.png">
            <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="ExpressionDesign" border="0" alt="ExpressionDesign" src="http://www.rowanbeach.com/content/binary/WindowsLiveWriter/ExpressionStudio_140EC/ExpressionDesign_thumb.png" width="626" height="434" />
          </a>
        </p>
        <p>
        </p>
        <p>
Expression Blend is great for laying out Silverlight / WPF application screens (I’ve
been using it mostly for Silverlight really) although it sometimes does nasty things
to the XAML (e.g. it often adds negative margins all over the place when you surround
something with a different layout container). If you stay in split view and keep an
eye on the XAML that is being churned out it really works quite well. Overall I still
tend to do a lot of layout in the visual studio XAML editor though - the better auto-complete
support with Resharper is great and being able to hit Ctrl+K, Ctrl+D to quickly reformat
the XAML is very handy. I find that I normally swap back and forth between Visual
Studio and Expression Blend when doing Silverlight layouts. Blend is pretty much indispensable
for doing key-frame animations, especially for parts and states model transitions
– those would be much more of a pain to code by hand in the XAML I wonder how things
will change when Visual Studio 2010 is released, as that will have GUI designer support
for XAML – time will tell. Oh, I should mention, Expression Blend can open Visual
Studio .sln files which is really handy – both apps will auto load changes made in
the other app too which works well normally, although occasionally I find that I need
to restart Blend as it seems to get confused by changes that have occurred in Visual
Studio.
</p>
        <p>
          <a href="http://www.rowanbeach.com/content/binary/WindowsLiveWriter/ExpressionStudio_140EC/ExpressionBlend.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="ExpressionBlend" border="0" alt="ExpressionBlend" src="http://www.rowanbeach.com/content/binary/WindowsLiveWriter/ExpressionStudio_140EC/ExpressionBlend_thumb.png" width="631" height="403" />
          </a>
        </p>
        <p>
As for the other tools in Expression studio, well I’m sure I’ll find a use for them
eventually :)
</p>
        <img width="0" height="0" src="http://www.rowanbeach.com/aggbug.ashx?id=5e8c8564-d574-49bf-98ca-a533b16e07a7" />
      </body>
      <title>Expression Studio</title>
      <guid isPermaLink="false">http://www.rowanbeach.com/PermaLink,guid,5e8c8564-d574-49bf-98ca-a533b16e07a7.aspx</guid>
      <link>http://www.rowanbeach.com/2010/01/21/ExpressionStudio.aspx</link>
      <pubDate>Thu, 21 Jan 2010 22:49:34 GMT</pubDate>
      <description>&lt;p&gt;
I bought Expression Studio 3 a while back – it’s really not bad at all. Expression
design is not up to Adobe Illustrator standards by any means but for my purposes it’s
very serviceable. Personally the only feature I really found myself wishing for after
using Illustrator is the gradient mesh. Fingers crossed for gradient mesh support
in Expression Design version 4…
&lt;/p&gt;
&lt;p&gt;
I designed the new Rowan Beach logo and web site graphics with Expression Design –
it only took a few hours to get something looking half decent even though I was pretty
new to the software (and some would say challenged from a design perspective) – the
software is a lot simpler than Illustrator which makes it faster to pick up and use.
Partly that’s because it doesn’t have the same feature set as Illustrator but I think
it’s also because it’s new software with the benefit of a clean, fresh UI design.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.rowanbeach.com/content/binary/WindowsLiveWriter/ExpressionStudio_140EC/ExpressionDesign_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="ExpressionDesign" border="0" alt="ExpressionDesign" src="http://www.rowanbeach.com/content/binary/WindowsLiveWriter/ExpressionStudio_140EC/ExpressionDesign_thumb.png" width="626" height="434"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
Expression Blend is great for laying out Silverlight / WPF application screens (I’ve
been using it mostly for Silverlight really) although it sometimes does nasty things
to the XAML (e.g. it often adds negative margins all over the place when you surround
something with a different layout container). If you stay in split view and keep an
eye on the XAML that is being churned out it really works quite well. Overall I still
tend to do a lot of layout in the visual studio XAML editor though - the better auto-complete
support with Resharper is great and being able to hit Ctrl+K, Ctrl+D to quickly reformat
the XAML is very handy. I find that I normally swap back and forth between Visual
Studio and Expression Blend when doing Silverlight layouts. Blend is pretty much indispensable
for doing key-frame animations, especially for parts and states model transitions
– those would be much more of a pain to code by hand in the XAML I wonder how things
will change when Visual Studio 2010 is released, as that will have GUI designer support
for XAML – time will tell. Oh, I should mention, Expression Blend can open Visual
Studio .sln files which is really handy – both apps will auto load changes made in
the other app too which works well normally, although occasionally I find that I need
to restart Blend as it seems to get confused by changes that have occurred in Visual
Studio.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.rowanbeach.com/content/binary/WindowsLiveWriter/ExpressionStudio_140EC/ExpressionBlend.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="ExpressionBlend" border="0" alt="ExpressionBlend" src="http://www.rowanbeach.com/content/binary/WindowsLiveWriter/ExpressionStudio_140EC/ExpressionBlend_thumb.png" width="631" height="403"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
As for the other tools in Expression studio, well I’m sure I’ll find a use for them
eventually :)
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.rowanbeach.com/aggbug.ashx?id=5e8c8564-d574-49bf-98ca-a533b16e07a7" /&gt;</description>
      <comments>http://www.rowanbeach.com/CommentView,guid,5e8c8564-d574-49bf-98ca-a533b16e07a7.aspx</comments>
      <category>Expression</category>
      <category>Silverlight</category>
    </item>
    <item>
      <trackback:ping>http://www.rowanbeach.com/Trackback.aspx?guid=45e85049-c010-4aac-adb3-e7c1341d97a3</trackback:ping>
      <pingback:server>http://www.rowanbeach.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.rowanbeach.com/PermaLink,guid,45e85049-c010-4aac-adb3-e7c1341d97a3.aspx</pingback:target>
      <dc:creator>Steve</dc:creator>
      <wfw:comment>http://www.rowanbeach.com/CommentView,guid,45e85049-c010-4aac-adb3-e7c1341d97a3.aspx</wfw:comment>
      <wfw:commentRss>http://www.rowanbeach.com/SyndicationService.asmx/GetEntryCommentsRss?guid=45e85049-c010-4aac-adb3-e7c1341d97a3</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
        </p>
        <p>
The pace at which Microsoft are releasing new technologies at the moment is little
short of astonishing. I had heard about the reactive framework a while ago but I didn't
know it had actually shipped in any form yet. I ended up finding a use for this for
the first time yesterday on a Silverlight project when I noticed that System.Reactive.dll
had been installed as part of the Silverlight toolkit. On this app I'm creating a
domain layer that will be shared by the Silverlight application on the client side
and an asp.net application on the server side. I'm using a shared code approach for
this at least until Silverlight 4 is released (via Visual Studio's 'Add existing item
-&gt; Add as link'). I had originally thought this would preclude me from using the reactive
extensions in the shared domain model but then I stumbled across this: <a href="http://msdn.microsoft.com/en-us/devlabs/ee794896.aspx">http://msdn.microsoft.com/en-us/devlabs/ee794896.aspx</a>.
Basically Microsoft have already released the Reactive Extensions for 3 platforms
- Silverlight, .NET 3.5 sp1 and .NET 4.0. So I was able to download the .NET 3.5 sp1
version and use the Reactive framework in both versions of my domain layer as I wanted
to. 
</p>
        <p>
For a basic overview of the reactive framework, check out the Microsoft devlabs site
(<a href="http://msdn.microsoft.com/en-us/devlabs/ee794896.aspx)">http://msdn.microsoft.com/en-us/devlabs/ee794896.aspx)</a>.
Here's the most pertinent quote from the front page of the site: 
</p>
        <blockquote>
          <p>
Rx is a superset of the standard LINQ sequence operators that exposes asynchronous
and event-based computations as push-based, observable collections via the new .NET
4.0 interfaces IObservable<T>
and IObserver<T>
. These are the mathematical dual of the familiar IEnumerable<T>
and IEnumerator<T>
interfaces for pull-based, enumerable collections in the .NET framework. 
</T></T></T></T></p>
        </blockquote>
        <p>
Here’s a simple example (with most of the non-pertinent code removed from the classes)
of how I’m using the IObservable<T>
interface where I would otherwise use a standard CLR event pattern. 
<p></p><pre class="brush: csharp;">public class Plan
{
    private readonly IList<SurveyElement>
_selectedSurveyElements; private readonly Subject<SurveyElement>
_surveyElementAdded; public Plan() { SurveyElementAdded = _surveyElementAdded = new
Subject<SurveyElement>
(); _selectedSurveyElements = new List<SurveyElement>
(); _assetPlans = new List<AssetPlan>
(); } public IObservable<SurveyElement>
SurveyElementAdded { get; private set; } public virtual IEnumerable<SurveyElement>
SelectedSurveyElements { get { return _selectedSurveyElements; } } public void AddSurveyElement(SurveyElement
surveyElement) { _selectedSurveyElements.Add(surveyElement); _surveyElementAdded.OnNext(surveyElement);
} }
</SurveyElement></SurveyElement></AssetPlan></SurveyElement></SurveyElement></SurveyElement></SurveyElement></pre><pre class="brush: csharp;">public class AssetPlan
{
    private readonly IList<SurveyElementPlan>
_surveyElementPlans; public AssetPlan(Asset asset, Plan plan) { Asset = asset; Plan
= plan; _surveyElementPlans = new List<SurveyElementPlan>
(); plan.SurveyElementAdded .StartWith(plan.SelectedSurveyElements.ToArray()) .Subscribe(x
=&gt; _surveyElementPlans.Add(new SurveyElementPlan(x, plan))); } public Asset Asset
{ get; private set; } public Plan Plan { get; private set; } public IEnumerable<SurveyElementPlan>
SurveyElementPlans { get { return _surveyElementPlans; } } } 
</SurveyElementPlan></SurveyElementPlan></SurveyElementPlan></pre><p></p><p>
The ‘interesting’ part here, is in the constructor for AssetPlan – the elements currently
attached to the plan are converted to an IObservable and then concatenated with any
elements that are added to the plan in the future (plan.SurveyElementAdded) and all
of them are operated on inside the lambda. This would take more lines of code and
be less ‘declarative’ using an event pattern.
</p><img width="0" height="0" src="http://www.rowanbeach.com/aggbug.ashx?id=45e85049-c010-4aac-adb3-e7c1341d97a3" /></T></p>
      </body>
      <title>Reactive Extensions for .NET (Rx)</title>
      <guid isPermaLink="false">http://www.rowanbeach.com/PermaLink,guid,45e85049-c010-4aac-adb3-e7c1341d97a3.aspx</guid>
      <link>http://www.rowanbeach.com/2010/01/09/ReactiveExtensionsForNETRx.aspx</link>
      <pubDate>Sat, 09 Jan 2010 09:07:16 GMT</pubDate>
      <description>&lt;p&gt;
&lt;p&gt;
The pace at which Microsoft are releasing new technologies at the moment is little
short of astonishing. I had heard about the reactive framework a while ago but I didn't
know it had actually shipped in any form yet. I ended up finding a use for this for
the first time yesterday on a Silverlight project when I noticed that System.Reactive.dll
had been installed as part of the Silverlight toolkit. On this app I'm creating a
domain layer that will be shared by the Silverlight application on the client side
and an asp.net application on the server side. I'm using a shared code approach for
this at least until Silverlight 4 is released (via Visual Studio's 'Add existing item
-&gt; Add as link'). I had originally thought this would preclude me from using the reactive
extensions in the shared domain model but then I stumbled across this: &lt;a href="http://msdn.microsoft.com/en-us/devlabs/ee794896.aspx"&gt;http://msdn.microsoft.com/en-us/devlabs/ee794896.aspx&lt;/a&gt;.
Basically Microsoft have already released the Reactive Extensions for 3 platforms
- Silverlight, .NET 3.5 sp1 and .NET 4.0. So I was able to download the .NET 3.5 sp1
version and use the Reactive framework in both versions of my domain layer as I wanted
to. 
&lt;p&gt;
For a basic overview of the reactive framework, check out the Microsoft devlabs site
(&lt;a href="http://msdn.microsoft.com/en-us/devlabs/ee794896.aspx)"&gt;http://msdn.microsoft.com/en-us/devlabs/ee794896.aspx)&lt;/a&gt;.
Here's the most pertinent quote from the front page of the site: &lt;blockquote&gt; 
&lt;p&gt;
Rx is a superset of the standard LINQ sequence operators that exposes asynchronous
and event-based computations as push-based, observable collections via the new .NET
4.0 interfaces IObservable&lt;T&gt;
and IObserver&lt;T&gt;
. These are the mathematical dual of the familiar IEnumerable&lt;T&gt;
and IEnumerator&lt;T&gt;
interfaces for pull-based, enumerable collections in the .NET framework. 
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
Here’s a simple example (with most of the non-pertinent code removed from the classes)
of how I’m using the IObservable&lt;T&gt;
interface where I would otherwise use a standard CLR event pattern. 
&lt;p&gt;
&lt;pre class="brush: csharp;"&gt;public class Plan
{
    private readonly IList&lt;SurveyElement&gt;
_selectedSurveyElements; private readonly Subject&lt;SurveyElement&gt;
_surveyElementAdded; public Plan() { SurveyElementAdded = _surveyElementAdded = new
Subject&lt;SurveyElement&gt;
(); _selectedSurveyElements = new List&lt;SurveyElement&gt;
(); _assetPlans = new List&lt;AssetPlan&gt;
(); } public IObservable&lt;SurveyElement&gt;
SurveyElementAdded { get; private set; } public virtual IEnumerable&lt;SurveyElement&gt;
SelectedSurveyElements { get { return _selectedSurveyElements; } } public void AddSurveyElement(SurveyElement
surveyElement) { _selectedSurveyElements.Add(surveyElement); _surveyElementAdded.OnNext(surveyElement);
} }
&lt;/pre&gt;&lt;pre class="brush: csharp;"&gt;public class AssetPlan
{
    private readonly IList&lt;SurveyElementPlan&gt;
_surveyElementPlans; public AssetPlan(Asset asset, Plan plan) { Asset = asset; Plan
= plan; _surveyElementPlans = new List&lt;SurveyElementPlan&gt;
(); plan.SurveyElementAdded .StartWith(plan.SelectedSurveyElements.ToArray()) .Subscribe(x
=&gt; _surveyElementPlans.Add(new SurveyElementPlan(x, plan))); } public Asset Asset
{ get; private set; } public Plan Plan { get; private set; } public IEnumerable&lt;SurveyElementPlan&gt;
SurveyElementPlans { get { return _surveyElementPlans; } } } 
&lt;/pre&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
The ‘interesting’ part here, is in the constructor for AssetPlan – the elements currently
attached to the plan are converted to an IObservable and then concatenated with any
elements that are added to the plan in the future (plan.SurveyElementAdded) and all
of them are operated on inside the lambda. This would take more lines of code and
be less ‘declarative’ using an event pattern.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.rowanbeach.com/aggbug.ashx?id=45e85049-c010-4aac-adb3-e7c1341d97a3" /&gt;</description>
      <comments>http://www.rowanbeach.com/CommentView,guid,45e85049-c010-4aac-adb3-e7c1341d97a3.aspx</comments>
      <category>System.Reactive</category>
    </item>
  </channel>
</rss>