<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="http://www.codeplex.com/rss.xsl"?><rss version="2.0"><channel><title>Umbrella</title><link>http://www.codeplex.com/umbrella/Project/ProjectRss.aspx</link><description>Umbrella is nVentive&amp;#39;s attempt at filling the gaps in the existing .net framework and related technologies&amp;#59; hence reducing friction and increasing the predictability of the api.       It consists of a ...</description><item><title>New Post: How to best implement this two-way binding pattern?</title><link>http://www.codeplex.com/umbrella/Thread/View.aspx?ThreadId=32351</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;Hi guys,&lt;/p&gt;
&lt;p&gt;First of all, I love Umbrella!&lt;/p&gt;
&lt;p&gt;Here's my issue: I'm trying to make my application settings &amp;lt;-&amp;gt; form controls binding nice and smooth. So I have this method, which I'm using like this:&lt;/p&gt;
&lt;pre&gt;Settings.Default.Bind(&amp;quot;SettingName&amp;quot;, this.chkSetting);&lt;/pre&gt;
&lt;p&gt;(where this particular overload takes a &lt;code&gt;CheckBox&lt;/code&gt; and thus binds to the &lt;code&gt;Checked&lt;/code&gt; property; the more general one takes a &lt;code&gt;Control&lt;/code&gt; and a second parameter for which property it binds to.) This is simple, just translating to&lt;/p&gt;
&lt;pre&gt;theControl.DataBindings.Add(controlProperty, this, settingName);&lt;/pre&gt;
&lt;p&gt;But now I want to be able to write code like this:&lt;/p&gt;
&lt;pre&gt;Settings.Default.Bind(&amp;quot;SettingName&amp;quot;, new Dictionary&amp;lt;RadioButton, SettingEnum&amp;gt;&lt;br&gt;{&lt;br&gt;    { this.radSettingNameA, SettingEnum.A},&lt;br&gt;    { this.radSettingNameB, SettingEnum.B },&lt;br&gt;    { this.radSettingNameC, SettingEnum.C }&lt;br&gt;});&lt;/pre&gt;
&lt;p&gt;My current attempt, which I haven't tested yet for unrelated reasons, is the following method of my Settings class (which implements &lt;code&gt;ApplicationSettingsBase&lt;/code&gt;, and thus &lt;code&gt;IPropertyChanged&lt;/code&gt;, and has strongly-typed properties for each setting):&lt;/p&gt;
&lt;pre&gt;public void Bind&amp;lt;T&amp;gt;(string settingName, Dictionary&amp;lt;RadioButton, T&amp;gt; controlValueMap)&lt;br&gt;{&lt;br&gt;    var value = new ReflectionValue&amp;lt;T&amp;gt;(this, settingName);&lt;br&gt;    value.Observe(&lt;br&gt;        (sender, args) =&amp;gt;&lt;br&gt;        {&lt;br&gt;            foreach (var pair in controlValueMap)&lt;br&gt;            {&lt;br&gt;                pair.Key.Checked = value.Get().Equals(pair.Value);&lt;br&gt;            }&lt;br&gt;        }&lt;br&gt;    );&lt;br&gt;&lt;br&gt;    foreach (RadioButton rad in controlValueMap.Keys)&lt;br&gt;    {&lt;br&gt;        var radValue = new ReflectionValue&amp;lt;bool&amp;gt;(rad, &amp;quot;Checked&amp;quot;);&lt;br&gt;        radValue.Observe(&lt;br&gt;            (sender, args) =&amp;gt;&lt;br&gt;            {&lt;br&gt;                if (radValue.Get())&lt;br&gt;                {&lt;br&gt;                    value.Set(controlValueMap[rad]);&lt;br&gt;                }&lt;br&gt;            }&lt;br&gt;        );&lt;br&gt;    }&lt;br&gt;}&lt;/pre&gt;
This is kinda messy, creates some &lt;code&gt;ReflectionValue&amp;lt;T&amp;gt;&lt;/code&gt; objects which apparently need to be disposed in a way that I don't understand (will they automatically dispose after going out of scope, thus breaking everything? Confused.), and it feels like you guys probably have a really elegant way of using Umbrella to make this sort of thing happen, probably by using some kind of two-way binding instead of two one-way bindings.
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Thoughts?&lt;/p&gt;
&lt;/div&gt;</description><author>Domenic</author><pubDate>Sun, 27 Jul 2008 05:00:56 GMT</pubDate><guid isPermaLink="false">New Post: How to best implement this two-way binding pattern? 20080727050056A</guid></item><item><title>Patch Uploaded: #1569</title><link>http://www.codeplex.com/umbrella/SourceControl/PatchList.aspx</link><description>
&lt;p&gt;&lt;a href='/site/users/view/PandaWood'&gt;PandaWood&lt;/a&gt; has uploaded a patch.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Description:&lt;/b&gt;&lt;br /&gt;Just a tiny patch limited to one test class - CollectionExtensionsFixture. &lt;br /&gt;The test for &amp;#39;Adapt&amp;#39; &amp;#40;which tested the &amp;#39;Adapt&amp;#39; Extension Method&amp;#41; only checked for null and wasn&amp;#39;t really tested - I wrote code to convert a collection of strings to ints, to make a proper test.&lt;br /&gt;As part of this change, I renamed the only member variable from &amp;#39;collection&amp;#39; to &amp;#39;intCollection&amp;#39; to keep the code clear.&lt;br /&gt;I also renamed a few test fixture names to be more explicit.&lt;/p&gt;</description><author>PandaWood</author><pubDate>Fri, 25 Jul 2008 09:29:54 GMT</pubDate><guid isPermaLink="false">Patch Uploaded: #1569 20080725092954A</guid></item><item><title>Commented Issue: Naming of IMessage&lt;TResponse, TRequest&gt; (better: IAction&lt;TResponse, TRequest&gt;)?</title><link>http://www.codeplex.com/umbrella/WorkItem/View.aspx?WorkItemId=1477</link><description>I like the concept, but I simply can&amp;#39;t understand why you named it IMessage. A message should be passive. It is not describing an action, but content.&lt;br /&gt;&lt;br /&gt;Or&amp;#58; &lt;br /&gt;IAction&amp;#60;TResponseMessage, TRequestMessage&amp;#62;&lt;br /&gt;IFunc&amp;#60;&amp;#62;&lt;br /&gt;ICommand&amp;#60;&amp;#62;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;I&amp;#39;m not the only one wondering either&amp;#58; http&amp;#58;&amp;#47;&amp;#47;www.ayende.com&amp;#47;Blog&amp;#47;archive&amp;#47;2008&amp;#47;06&amp;#47;04&amp;#47;Review-Umbrella-project.aspx&lt;br /&gt;Comments: ** Comment from web user: dcazzulino ** &lt;p&gt;And the T arguments should be inverted, like they are in Func&amp;#60;&amp;#62;&amp;#58; first the input, then the output&amp;#58;&lt;/p&gt;&lt;p&gt;IAction&amp;#60;TRequest, TResponse&amp;#62;&lt;/p&gt;&lt;p&gt;that would be so much better and aligned with .NET... &lt;/p&gt;</description><author>dcazzulino</author><pubDate>Mon, 21 Jul 2008 14:35:42 GMT</pubDate><guid isPermaLink="false">Commented Issue: Naming of IMessage&lt;TResponse, TRequest&gt; (better: IAction&lt;TResponse, TRequest&gt;)? 20080721023542P</guid></item><item><title>Closed Issue: ThreadLocalServiceLocator - instances is null</title><link>http://www.codeplex.com/umbrella/WorkItem/View.aspx?WorkItemId=1366</link><description>static class ThreadLocalServiceLocator&lt;br /&gt;public static bool IsLoaded&lt;br /&gt;        &amp;#123;&lt;br /&gt;            get &amp;#123; return instances.Any&amp;#40;&amp;#41;&amp;#59; &amp;#125;&lt;br /&gt;        &amp;#125;&lt;br /&gt;failing because instances is null.&lt;br /&gt;&lt;br /&gt;&amp;#91;ThreadStatic&amp;#93;&lt;br /&gt;private static Stack&amp;#60;IServiceLocator&amp;#62; instances &amp;#61; new Stack&amp;#60;IServiceLocator&amp;#62;&amp;#40;&amp;#41;&amp;#59;&lt;br /&gt;&lt;br /&gt;The msdn pretty clearly states that this is a BAD idea&amp;#58;&lt;br /&gt;http&amp;#58;&amp;#47;&amp;#47;msdn.microsoft.com&amp;#47;en-us&amp;#47;library&amp;#47;system.threadstaticattribute.aspx&lt;br /&gt;&amp;#34;Do not specify initial values for fields marked with ThreadStaticAttribute, because such initialization occurs only once, when the class constructor executes, and therefore affects only one thread. If you do not specify an initial value, you can rely on the field being initialized to its default value if it is a value type, or to nullNothingnullptra null reference if it is a reference type.&amp;#34;&lt;br /&gt;&lt;br /&gt;Well yeah... that&amp;#39;d be what is happening.&lt;br /&gt;&lt;br /&gt;Attached is the fix.&lt;br /&gt;Comments: Fixed by justrudd in changeset 11171</description><author>francois_tanguay</author><pubDate>Mon, 07 Jul 2008 23:25:54 GMT</pubDate><guid isPermaLink="false">Closed Issue: ThreadLocalServiceLocator - instances is null 20080707112554P</guid></item><item><title>New Post: Couple of multithreaded bugs</title><link>http://www.codeplex.com/umbrella/Thread/View.aspx?ThreadId=30565</link><description>&lt;div style="line-height: normal;"&gt;Hi Justin,&lt;br&gt;
&lt;br&gt;
This is great news! I'll make sure to have a look into it asap.
&lt;/div&gt;</description><author>francois_tanguay</author><pubDate>Mon, 07 Jul 2008 23:24:12 GMT</pubDate><guid isPermaLink="false">New Post: Couple of multithreaded bugs 20080707112412P</guid></item><item><title>Commented Issue: ThreadLocalServiceLocator - instances is null</title><link>http://www.codeplex.com/umbrella/WorkItem/View.aspx?WorkItemId=1366</link><description>static class ThreadLocalServiceLocator&lt;br /&gt;public static bool IsLoaded&lt;br /&gt;        &amp;#123;&lt;br /&gt;            get &amp;#123; return instances.Any&amp;#40;&amp;#41;&amp;#59; &amp;#125;&lt;br /&gt;        &amp;#125;&lt;br /&gt;failing because instances is null.&lt;br /&gt;&lt;br /&gt;&amp;#91;ThreadStatic&amp;#93;&lt;br /&gt;private static Stack&amp;#60;IServiceLocator&amp;#62; instances &amp;#61; new Stack&amp;#60;IServiceLocator&amp;#62;&amp;#40;&amp;#41;&amp;#59;&lt;br /&gt;&lt;br /&gt;The msdn pretty clearly states that this is a BAD idea&amp;#58;&lt;br /&gt;http&amp;#58;&amp;#47;&amp;#47;msdn.microsoft.com&amp;#47;en-us&amp;#47;library&amp;#47;system.threadstaticattribute.aspx&lt;br /&gt;&amp;#34;Do not specify initial values for fields marked with ThreadStaticAttribute, because such initialization occurs only once, when the class constructor executes, and therefore affects only one thread. If you do not specify an initial value, you can rely on the field being initialized to its default value if it is a value type, or to nullNothingnullptra null reference if it is a reference type.&amp;#34;&lt;br /&gt;&lt;br /&gt;Well yeah... that&amp;#39;d be what is happening.&lt;br /&gt;&lt;br /&gt;Attached is the fix.&lt;br /&gt;Comments: ** Comment from web user: justrudd ** &lt;p&gt;I fixed this in changeset 11171 &amp;#40;along with another threading bug&amp;#41;.&lt;/p&gt;</description><author>justrudd</author><pubDate>Thu, 03 Jul 2008 17:36:26 GMT</pubDate><guid isPermaLink="false">Commented Issue: ThreadLocalServiceLocator - instances is null 20080703053626P</guid></item><item><title>New Post: Couple of multithreaded bugs</title><link>http://www.codeplex.com/umbrella/Thread/View.aspx?ThreadId=30565</link><description>&lt;div style="line-height: normal;"&gt;Hey guys,&lt;br&gt;
&lt;br&gt;
I fixed a couple of bugs that showed up during some multithreaded stress testing.&amp;nbsp; Check out the latest ChangeSet - http://www.codeplex.com/umbrella/SourceControl/DirectoryView.aspx?SourcePath=&amp;amp;changeSetId=11171.&amp;nbsp; The biggest one was ValueSupport.cs.&amp;nbsp; I changed it to use a synchronized dictionary instead of just plain old dictionary.&amp;nbsp; I kept getting hit by InvalidOperationException because of an enumeration change.&amp;nbsp; Basically what was happening is I am calling &amp;quot;someString&amp;quot;.Conversion().To&amp;lt;SomeEnum&amp;gt;() which eventually gets into ValueSupport.&amp;nbsp; I am doing the above conversion on many different threads so it failed.&lt;br&gt;
&lt;br&gt;
Also, for anything marked with [ThreadStatic], you can't do inline initialization like the previous code did.&amp;nbsp; The first thread that hits will trigger the new.&amp;nbsp; All others will simply get the default value (null).&lt;br&gt;
&lt;br&gt;
Justin Rudd&lt;br&gt;
&lt;/div&gt;</description><author>justrudd</author><pubDate>Tue, 01 Jul 2008 00:30:03 GMT</pubDate><guid isPermaLink="false">New Post: Couple of multithreaded bugs 20080701123003A</guid></item><item><title>Source code checked in, #11171</title><link>http://www.codeplex.com/umbrella/SourceControl/ListDownloadableCommits.aspx</link><description>Fixed a couple of multithreaded bugs in ValueSupport and ThreadLocalServiceLocator.  Added missing test.</description><author>justrudd</author><pubDate>Tue, 01 Jul 2008 00:25:15 GMT</pubDate><guid isPermaLink="false">Source code checked in, #11171 20080701122515A</guid></item><item><title>New Post: Naming of IMessage&lt;TResponse, TRequest&gt; (better: IAction&lt;TResponse, TRequest&gt;)?</title><link>http://www.codeplex.com/umbrella/Thread/View.aspx?ThreadId=29870</link><description>&lt;div style="line-height: normal;"&gt;I think TResponseMessage ICommand.Execute(TRequestMessage) could be a&amp;nbsp;good choice. It also sticks to the command pattern.&lt;br&gt;
&lt;br&gt;
Other ideas: IMessageCommand.Execute(), IMessageHandler.SendReceive(), IMessageAction.SendReceive()&lt;br&gt;
&lt;br&gt;
Lars
&lt;/div&gt;</description><author>LarsCorneliussen</author><pubDate>Mon, 30 Jun 2008 08:25:12 GMT</pubDate><guid isPermaLink="false">New Post: Naming of IMessage&lt;TResponse, TRequest&gt; (better: IAction&lt;TResponse, TRequest&gt;)? 20080630082512A</guid></item><item><title>New Post: Naming of IMessage&lt;TResponse, TRequest&gt; (better: IAction&lt;TResponse, TRequest&gt;)?</title><link>http://www.codeplex.com/umbrella/Thread/View.aspx?ThreadId=29870</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;Yeah. I had problems with the name as well but couldn't figure out a better name.&lt;/p&gt;
&lt;p&gt;I don't like IAction as the Action delegate doesn't have a return value.&lt;/p&gt;
&lt;p&gt;ICommand looks more natural than IFunc. Maybe I should rename Send for Execute.&lt;/p&gt;
&lt;p&gt;Any thoughts?&lt;/p&gt;
&lt;/div&gt;</description><author>francois_tanguay</author><pubDate>Sat, 28 Jun 2008 14:56:31 GMT</pubDate><guid isPermaLink="false">New Post: Naming of IMessage&lt;TResponse, TRequest&gt; (better: IAction&lt;TResponse, TRequest&gt;)? 20080628025631P</guid></item><item><title>New Post: Naming of IMessage&lt;TResponse, TRequest&gt; (better: IAction&lt;TResponse, TRequest&gt;)?</title><link>http://www.codeplex.com/umbrella/Thread/View.aspx?ThreadId=29870</link><description>&lt;div style="line-height: normal;"&gt;&lt;p class=workItemDescription&gt;&lt;span style="text-decoration:underline"&gt;&lt;em&gt;Sorry, a discussion is probably better. Just remove the issue&amp;nbsp;I created.&lt;br&gt;
&lt;/em&gt;&lt;/span&gt;&lt;br&gt;
I like the concept, but I simply can't understand why you named it IMessage. A message should be passive. It is not describing an action, but content.&lt;br&gt;
&lt;br&gt;
Or: &lt;br&gt;
IAction&amp;lt;TResponseMessage, TRequestMessage&amp;gt;&lt;br&gt;
IFunc&amp;lt;&amp;gt;&lt;br&gt;
ICommand&amp;lt;&amp;gt;&lt;br&gt;
...&lt;br&gt;
&lt;br&gt;
I'm not the only one wondering either: http://www.ayende.com/Blog/archive/&lt;wbr&gt;2008/06/04/Review-Umbrella-project.&lt;wbr&gt;aspx &lt;/p&gt;
&lt;/div&gt;</description><author>LarsCorneliussen</author><pubDate>Wed, 18 Jun 2008 15:23:20 GMT</pubDate><guid isPermaLink="false">New Post: Naming of IMessage&lt;TResponse, TRequest&gt; (better: IAction&lt;TResponse, TRequest&gt;)? 20080618032320P</guid></item><item><title>Created Issue: Naming of IMessage&lt;TResponse, TRequest&gt; (better: IAction&lt;TResponse, TRequest&gt;)?</title><link>http://www.codeplex.com/umbrella/WorkItem/View.aspx?WorkItemId=1477</link><description>I like the concept, but I simply can&amp;#39;t understand why you named it IMessage. A message should be passive. It is not describing an action, but content.&lt;br /&gt;&lt;br /&gt;Or&amp;#58; &lt;br /&gt;IAction&amp;#60;TResponseMessage, TRequestMessage&amp;#62;&lt;br /&gt;IFunc&amp;#60;&amp;#62;&lt;br /&gt;ICommand&amp;#60;&amp;#62;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;I&amp;#39;m not the only one wondering either&amp;#58; http&amp;#58;&amp;#47;&amp;#47;www.ayende.com&amp;#47;Blog&amp;#47;archive&amp;#47;2008&amp;#47;06&amp;#47;04&amp;#47;Review-Umbrella-project.aspx&lt;br /&gt;</description><author>LarsCorneliussen</author><pubDate>Wed, 18 Jun 2008 15:18:29 GMT</pubDate><guid isPermaLink="false">Created Issue: Naming of IMessage&lt;TResponse, TRequest&gt; (better: IAction&lt;TResponse, TRequest&gt;)? 20080618031829P</guid></item><item><title>Created Issue: Allow culture to be specified in the conversion extension</title><link>http://www.codeplex.com/umbrella/WorkItem/View.aspx?WorkItemId=1476</link><description>When converting between types it&amp;#39;s sometimes preferable to use a different culture than the current one. The attached patch allows this.&lt;br /&gt;</description><author>appel</author><pubDate>Wed, 18 Jun 2008 14:38:55 GMT</pubDate><guid isPermaLink="false">Created Issue: Allow culture to be specified in the conversion extension 20080618023855P</guid></item><item><title>Commented Issue: ThreadLocalServiceLocator - instances is null</title><link>http://www.codeplex.com/umbrella/WorkItem/View.aspx?WorkItemId=1366</link><description>static class ThreadLocalServiceLocator&lt;br /&gt;public static bool IsLoaded&lt;br /&gt;        &amp;#123;&lt;br /&gt;            get &amp;#123; return instances.Any&amp;#40;&amp;#41;&amp;#59; &amp;#125;&lt;br /&gt;        &amp;#125;&lt;br /&gt;failing because instances is null.&lt;br /&gt;&lt;br /&gt;&amp;#91;ThreadStatic&amp;#93;&lt;br /&gt;private static Stack&amp;#60;IServiceLocator&amp;#62; instances &amp;#61; new Stack&amp;#60;IServiceLocator&amp;#62;&amp;#40;&amp;#41;&amp;#59;&lt;br /&gt;&lt;br /&gt;The msdn pretty clearly states that this is a BAD idea&amp;#58;&lt;br /&gt;http&amp;#58;&amp;#47;&amp;#47;msdn.microsoft.com&amp;#47;en-us&amp;#47;library&amp;#47;system.threadstaticattribute.aspx&lt;br /&gt;&amp;#34;Do not specify initial values for fields marked with ThreadStaticAttribute, because such initialization occurs only once, when the class constructor executes, and therefore affects only one thread. If you do not specify an initial value, you can rely on the field being initialized to its default value if it is a value type, or to nullNothingnullptra null reference if it is a reference type.&amp;#34;&lt;br /&gt;&lt;br /&gt;Well yeah... that&amp;#39;d be what is happening.&lt;br /&gt;&lt;br /&gt;Attached is the fix.&lt;br /&gt;Comments: ** Comment from web user: francois_tanguay ** &lt;p&gt;Oh sweet. That&amp;#39;s definitely something I didn&amp;#39;t know about.&lt;/p&gt;&lt;p&gt;I love posting stuff publicly. You get awesome feedback like this.&lt;/p&gt;&lt;p&gt;I&amp;#39;ll make sure to fix it asap.&lt;/p&gt;&lt;p&gt;Thanks&amp;#33;&lt;/p&gt;&lt;p&gt;Btw, If you wish to contribute at some point, send me a message through codeplex profile and I&amp;#39;ll add you as a contributor.&lt;/p&gt;</description><author>francois_tanguay</author><pubDate>Fri, 13 Jun 2008 12:11:06 GMT</pubDate><guid isPermaLink="false">Commented Issue: ThreadLocalServiceLocator - instances is null 20080613121106P</guid></item><item><title>Created Issue: ThreadLocalServiceLocator - instances is null</title><link>http://www.codeplex.com/umbrella/WorkItem/View.aspx?WorkItemId=1366</link><description>static class ThreadLocalServiceLocator&lt;br /&gt;public static bool IsLoaded&lt;br /&gt;        &amp;#123;&lt;br /&gt;            get &amp;#123; return instances.Any&amp;#40;&amp;#41;&amp;#59; &amp;#125;&lt;br /&gt;        &amp;#125;&lt;br /&gt;failing because instances is null.&lt;br /&gt;&lt;br /&gt;&amp;#91;ThreadStatic&amp;#93;&lt;br /&gt;private static Stack&amp;#60;IServiceLocator&amp;#62; instances &amp;#61; new Stack&amp;#60;IServiceLocator&amp;#62;&amp;#40;&amp;#41;&amp;#59;&lt;br /&gt;&lt;br /&gt;The msdn pretty clearly states that this is a BAD idea&amp;#58;&lt;br /&gt;http&amp;#58;&amp;#47;&amp;#47;msdn.microsoft.com&amp;#47;en-us&amp;#47;library&amp;#47;system.threadstaticattribute.aspx&lt;br /&gt;&amp;#34;Do not specify initial values for fields marked with ThreadStaticAttribute, because such initialization occurs only once, when the class constructor executes, and therefore affects only one thread. If you do not specify an initial value, you can rely on the field being initialized to its default value if it is a value type, or to nullNothingnullptra null reference if it is a reference type.&amp;#34;&lt;br /&gt;&lt;br /&gt;Well yeah... that&amp;#39;d be what is happening.&lt;br /&gt;&lt;br /&gt;Attached is the fix.&lt;br /&gt;</description><author>Woil</author><pubDate>Wed, 11 Jun 2008 21:09:32 GMT</pubDate><guid isPermaLink="false">Created Issue: ThreadLocalServiceLocator - instances is null 20080611090932P</guid></item><item><title>NEW POST: Binding Extensions</title><link>http://www.codeplex.com/umbrella/Thread/View.aspx?ThreadId=28927</link><description>&lt;div style="line-height: normal;"&gt;I'm not attached to any names, so I'll rename them.&lt;br&gt;
&lt;br&gt;
And I'll ping TripleZ to find out what he's up to as well.&lt;br&gt;
&lt;/div&gt;</description><author>justrudd</author><pubDate>Wed, 04 Jun 2008 20:19:24 GMT</pubDate><guid isPermaLink="false">NEW POST: Binding Extensions 20080604081924P</guid></item><item><title>NEW POST: Binding Extensions</title><link>http://www.codeplex.com/umbrella/Thread/View.aspx?ThreadId=28927</link><description>&lt;div style="line-height: normal;"&gt;Sorry for the long delay in the response. Was Out of town (whan an excuse!)&lt;br&gt;
&lt;br&gt;
I totally agree it should be renamed to Curry as it is exactly that.&lt;br&gt;
&lt;br&gt;
@Justin: You should send a message to TripleZ (on the People page) as I thought he was to integrate his currying functions in the project. He did a talk at DevTeach Toronto on Functionnal C# and had plenty of examples of &amp;quot;F# like&amp;quot; helpers.&lt;br&gt;
&lt;br&gt;
&lt;/div&gt;</description><author>francois_tanguay</author><pubDate>Wed, 04 Jun 2008 19:19:10 GMT</pubDate><guid isPermaLink="false">NEW POST: Binding Extensions 20080604071910P</guid></item><item><title>NEW POST: Binding Extensions</title><link>http://www.codeplex.com/umbrella/Thread/View.aspx?ThreadId=28927</link><description>&lt;div style="line-height: normal;"&gt;&amp;quot;Anyone have any problems with these being in the library?&amp;quot;&lt;br&gt;
&lt;br&gt;
No problems at all, except that they should be renamed to Curry.&lt;br&gt;
&lt;/div&gt;</description><author>JeremyGray</author><pubDate>Tue, 03 Jun 2008 14:20:05 GMT</pubDate><guid isPermaLink="false">NEW POST: Binding Extensions 20080603022005P</guid></item><item><title>Source code checked in</title><link>http://www.codeplex.com/umbrella/SourceControl/ListDownloadableCommits.aspx</link><description>Added IClock interface.  Changed DateTime and TimeSpan extensions to use IClock.  Added string validations &amp;#40;based on ValidationExtensionPoint&amp;#41;.  Simple Func and Action bindings &amp;#40;to be reviewed&amp;#41;.</description><author>justrudd</author><pubDate>Tue, 03 Jun 2008 05:44:43 GMT</pubDate><guid isPermaLink="false">Source code checked in 20080603054443A</guid></item><item><title>NEW POST: Binding Extensions</title><link>http://www.codeplex.com/umbrella/Thread/View.aspx?ThreadId=28927</link><description>&lt;div style="line-height: normal;"&gt;I'm a big fan of the C++ STL.&amp;nbsp; One of the nice things it has is a couple of methods like bind1st and bind2nd.&amp;nbsp; This allow you to adapt binary functions into unary functions.&amp;nbsp; Boost (http://boost.org) has extended this quite a bit with their positional parameters (_1, _2, etc.).&amp;nbsp; Now we can't get positional parameters (I've tried.&amp;nbsp; But generics just aren't as powerful as templates), but we can have simple bindings.&amp;nbsp; I'm thinking of adding the Func and Action bindings that I have to the library.&amp;nbsp; Here are the func bindings...&lt;br&gt;
&lt;br&gt;
using System;&lt;br&gt;
&lt;br&gt;
namespace nVentive.Umbrella.Extensions&lt;br&gt;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public static class FuncBindingExtensions&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; public static Func&amp;lt;TResult&amp;gt; &lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Bind&amp;lt;T, TResult&amp;gt;(this Func&amp;lt;T, TResult&amp;gt; func, T value)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return () =&amp;gt; func(value);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; public static Func&amp;lt;T2, TResult&amp;gt; &lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; BindFirst&amp;lt;T1, T2, TResult&amp;gt;(this Func&amp;lt;T1, T2, TResult&amp;gt; func, T1 first)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return (T2 last) =&amp;gt; func(first, last);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; public static Func&amp;lt;T1, TResult&amp;gt; &lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; BindLast&amp;lt;T1, T2, TResult&amp;gt;(this Func&amp;lt;T1, T2, TResult&amp;gt; func, T2 last)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return (T1 first) =&amp;gt; func(first, last);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; public static Func&amp;lt;T2, T3, TResult&amp;gt; &lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; BindFirst&amp;lt;T1, T2, T3, TResult&amp;gt;(this Func&amp;lt;T1, T2, T3, TResult&amp;gt; func, T1 first)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return (T2 second, T3 last) =&amp;gt; func(first, second, last);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; public static Func&amp;lt;T1, T2, TResult&amp;gt; &lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; BindLast&amp;lt;T1, T2, T3, TResult&amp;gt;(this Func&amp;lt;T1, T2, T3, TResult&amp;gt; func, T3 last)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return (T1 first, T2 second) =&amp;gt; func(first, second, last);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; public static Func&amp;lt;T2, T3, T4, TResult&amp;gt; &lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; BindFirst&amp;lt;T1, T2, T3, T4, TResult&amp;gt;(this Func&amp;lt;T1, T2, T3, T4, TResult&amp;gt; func, T1 first)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return (T2 second, T3 third, T4 last) =&amp;gt; func(first, second, third, last);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; public static Func&amp;lt;T1, T2, T3, TResult&amp;gt; &lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; BindLast&amp;lt;T1, T2, T3, T4, TResult&amp;gt;(this Func&amp;lt;T1, T2, T3, T4, TResult&amp;gt; func, T4 last)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return (T1 first, T2 second, T3 third) =&amp;gt; func(first, second, third, last);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
}&lt;br&gt;
&lt;br&gt;
I won't post the Action ones because they are pretty much the same but with no TResult type parameter.&amp;nbsp; Anyone have any problems with these being in the library?&lt;br&gt;
&lt;br&gt;
Justin&lt;br&gt;
&lt;/div&gt;</description><author>justrudd</author><pubDate>Tue, 03 Jun 2008 05:09:41 GMT</pubDate><guid isPermaLink="false">NEW POST: Binding Extensions 20080603050941A</guid></item></channel></rss>