<Type Name="ObjectCoda" FullName="Cadenza.ObjectCoda">
  <TypeSignature Language="C#" Value="public static class ObjectCoda" />
  <AssemblyInfo>
    <AssemblyName>Demo</AssemblyName>
    <AssemblyVersion>0.0.0.0</AssemblyVersion>
  </AssemblyInfo>
  <Base>
    <BaseTypeName>System.Object</BaseTypeName>
  </Base>
  <Interfaces />
  <Docs>
    <summary>
             Extension methods on <see cref="T:System.Object" />.
            </summary>
    <remarks>To be added.</remarks>
  </Docs>
  <Members>
    <Member MemberName="With&lt;TSource,TResult&gt;">
      <MemberSignature Language="C#" Value="public static TResult With&lt;TSource,TResult&gt; (this TSource self, Func&lt;TSource,TResult&gt; selector);" />
      <MemberType>Method</MemberType>
      <AssemblyInfo>
        <AssemblyVersion>0.0.0.0</AssemblyVersion>
      </AssemblyInfo>
      <ReturnValue>
        <ReturnType>TResult</ReturnType>
      </ReturnValue>
      <TypeParameters>
        <TypeParameter Name="TSource" />
        <TypeParameter Name="TResult" />
      </TypeParameters>
      <Parameters>
        <Parameter Name="self" Type="TSource" RefType="this" />
        <Parameter Name="selector" Type="System.Func&lt;TSource,TResult&gt;" />
      </Parameters>
      <Docs>
        <typeparam name="TSource">The type to operate on.</typeparam>
        <typeparam name="TResult">The type to return.</typeparam>
        <param name="self">
              A <typeparamref name="TSource" /> containing the value to manipulate.
              This value may be <see langword="null" /> (unlike most other
              extension methods).
            </param>
        <param name="selector">
              A <see cref="T:System.Func{TSource,TResult}" /> which will be
              invoked with <paramref name="self" /> as a parameter.
            </param>
        <summary>
              Supports chaining otherwise temporary values.
            </summary>
        <returns>
              The value of type <typeparamref name="TResult" /> returned by
              <paramref name="selector" />.
            </returns>
        <remarks>
          <para>
            <c>With</c> is useful for easily using an intermediate value within
                an expression "chain" without requiring an explicit variable
                declaration (which is useful for reducing in-scope variables, as no
                variable is explicitly declared).
              </para>
          <code lang="C#" src="../../example.cs#With">Console.WriteLine(
    args.OrderBy(v =&gt; v)
    .With(c =&gt; c.ElementAt (c.Count()/2)));
</code>
        </remarks>
        <exception cref="T:System.ArgumentNullException">
          <paramref name="selector" /> is <see langword="null" />.
            </exception>
      </Docs>
    </Member>
  </Members>
</Type>
