<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
  <channel>
    <title>CodeKeep C# Feed</title>
    <description>The latest and greatest C# code snippets publicly available</description>
    <link>http://www.codekeep.net/feeds.aspx</link>
    <lastBuildDate>Mon, 17 Jun 2013 21:19:14 GMT</lastBuildDate>
    <docs>http://backend.userland.com/rss</docs>
    <generator>RSS.NET: http://www.rssdotnet.com/</generator>
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/CodeKeepCSharp" /><feedburner:info uri="codekeepcsharp" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
      <title>Another Object Copier</title>
      <description>Description: See Object Copier&lt;br /&gt;&lt;br /&gt;Link: &lt;a href='http://www.codekeep.net/snippets/95454b67-6486-4048-94b8-dba076a7dd65.aspx'&gt;http://www.codekeep.net/snippets/95454b67-6486-4048-94b8-dba076a7dd65.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style='font-size: 9pt;'&gt;void Main()
{

	Expression&amp;lt;Func&amp;lt;Employee, EmployeeDto&amp;gt;&amp;gt; copierExpression 
		= Build.CopierFor&amp;lt;Employee, EmployeeDto&amp;gt;()
			.WithTransform(e =&amp;gt; new EmployeeDto { ID = int.Parse(e.EmployeeId)*2, Salary = decimal.Parse(e.Salary)} );
	
//	copierExpression.Dump(&amp;quot;Main&amp;quot;);
	
	Func&amp;lt;Employee, EmployeeDto&amp;gt; copy = copierExpression.Compile();

	var emp = new Employee { Name = &amp;quot;George&amp;quot;, EmployeeId = &amp;quot;26&amp;quot;, Salary = &amp;quot;23333&amp;quot; };
	emp.Dump(&amp;quot;Original&amp;quot;);
	copy(emp).Dump(&amp;quot;Copy&amp;quot;);
}

public static class Build 
{

	public static Expression&amp;lt;Func&amp;lt;TOriginal, TCopy&amp;gt;&amp;gt; CopierFor&amp;lt;TOriginal, TCopy&amp;gt;()
	{
		var typeOfOriginal = typeof(TOriginal);
		var typeOfCopy = typeof(TCopy);
		
		var originalParamExpr = Expression.Parameter(typeOfOriginal, &amp;quot;original&amp;quot;);
		
		var originalProperties = typeOfOriginal.GetProperties();
		var copyProperties = typeOfCopy.GetProperties();
		
		Func&amp;lt;PropertyInfo, string&amp;gt; propertyInfoKeySelector = pi =&amp;gt; pi.Name;
		Func&amp;lt;PropertyInfo, PropertyInfo, MemberBinding&amp;gt; bindingsSelector
			= (original, copy) =&amp;gt; 
				Expression.Bind
				(
					copy, 
					Expression.Property(originalParamExpr, original.Name)
				);
		
		var bindings 
			= originalProperties
				.Join
				(
					copyProperties,
					p =&amp;gt; p.Name,
					p =&amp;gt; p.Name,
					(o, c) =&amp;gt; new { Original = o, Copy = c }
				)
				.Where (p =&amp;gt; p.Original.PropertyType == p.Copy.PropertyType)
				.Select (p =&amp;gt; Expression.Bind(p.Copy, Expression.Property(originalParamExpr, p.Original.Name)));
		
		return Expression.Lambda&amp;lt;Func&amp;lt;TOriginal, TCopy&amp;gt;&amp;gt;
			(
				Expression.MemberInit
				(
					Expression.New(typeOfCopy),
					bindings
				),
				originalParamExpr
			);
	}
	
	public static Expression&amp;lt;Func&amp;lt;TOriginal, TCopy&amp;gt;&amp;gt; WithTransform&amp;lt;TOriginal, TCopy&amp;gt;
	(
		this Expression&amp;lt;Func&amp;lt;TOriginal, TCopy&amp;gt;&amp;gt; copier, 
		Expression&amp;lt;Func&amp;lt;TOriginal, TCopy&amp;gt;&amp;gt; transform
	)
	{
	
		var visitor = new ParameterReplacementExpressionVisitor(
			Expression.Parameter(typeof(TOriginal)));
		
		var typeOfCopy = typeof(TCopy);
		var visitedTransform = visitor.Visit(transform) as Expression&amp;lt;Func&amp;lt;TOriginal, TCopy&amp;gt;&amp;gt;;
		var transformBody = ( transform.Body as MemberInitExpression);

		var transformations = transformBody.Bindings;
		
		var newCopy = Expression.New(typeOfCopy);
		
		var bindings = transformBody.Bindings.Union((copier.Body as MemberInitExpression).Bindings);
			
		var memberInit = Expression.MemberInit(newCopy, bindings);
		
		return (Expression&amp;lt;Func&amp;lt;TOriginal, TCopy&amp;gt;&amp;gt;)
			visitor.Visit
			(
				Expression.Lambda&amp;lt;Func&amp;lt;TOriginal, TCopy&amp;gt;&amp;gt;(memberInit, copier.Parameters)
			);
			
	}

}

public class ParameterReplacementExpressionVisitor : ExpressionVisitor
{
	private ParameterExpression _replacementParameter;
	
	public ParameterReplacementExpressionVisitor( ParameterExpression replacementParameter ) 
	{ 
		_replacementParameter = replacementParameter;
	}

	protected override Expression VisitParameter(ParameterExpression node)
	{
		return _replacementParameter;
	}

}

public class Employee 
{ 
	public string Name { get; set; }
	public string EmployeeId { get; set; }
	public string Salary { get; set; }
}

public class EmployeeDto 
{
	public string Name { get; set; }
	public int ID { get; set; }
	public decimal Salary { get; set; }
}
&lt;/pre&gt;&lt;img src="http://feeds.feedburner.com/~r/CodeKeepCSharp/~4/zKtdgr2aOhI" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/CodeKeepCSharp/~3/zKtdgr2aOhI/95454b67-6486-4048-94b8-dba076a7dd65.aspx</link>
      <pubDate>Mon, 17 Jun 2013 21:19:14 GMT</pubDate>
    <feedburner:origLink>http://www.codekeep.net/snippets/95454b67-6486-4048-94b8-dba076a7dd65.aspx</feedburner:origLink></item>
    <item>
      <title>Object Copier</title>
      <description>Description: Demonstrates using expression rewriter to create an object property copier similar to that found in AutoMapper.&lt;br /&gt;&lt;br /&gt;Link: &lt;a href='http://www.codekeep.net/snippets/e27c25d9-82d9-422b-afed-1c1d9a4a6176.aspx'&gt;http://www.codekeep.net/snippets/e27c25d9-82d9-422b-afed-1c1d9a4a6176.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style='font-size: 9pt;'&gt;void Main()
{

	Expression&amp;lt;Func&amp;lt;Employee, EmployeeDto&amp;gt;&amp;gt; copierExpression 
		= Build.CopierFor&amp;lt;Employee, EmployeeDto&amp;gt;()
			.WithTransform(e =&amp;gt; new { ID = int.Parse(e.Id), Salary = decimal.Parse(e.Salary)} );
	
//	copierExpression.Dump(&amp;quot;Main&amp;quot;);
	
	Func&amp;lt;Employee, EmployeeDto&amp;gt; copy = copierExpression.Compile();

	var emp = new Employee { Name = &amp;quot;George&amp;quot;, Id = &amp;quot;26&amp;quot;, Salary = &amp;quot;23333&amp;quot; };
	emp.Dump(&amp;quot;Original&amp;quot;);
	copy(emp).Dump(&amp;quot;Copy&amp;quot;);
}

public static class Build 
{

	public static Expression&amp;lt;Func&amp;lt;TOriginal, TCopy&amp;gt;&amp;gt; CopierFor&amp;lt;TOriginal, TCopy&amp;gt;()
	{
		var typeOfOriginal = typeof(TOriginal);
		var typeOfCopy = typeof(TCopy);
		
		var originalParamExpr = Expression.Parameter(typeOfOriginal, &amp;quot;original&amp;quot;);
		
		var originalProperties = typeOfOriginal.GetProperties();
		var copyProperties = typeOfCopy.GetProperties();
		
		Func&amp;lt;PropertyInfo, string&amp;gt; propertyInfoKeySelector = pi =&amp;gt; pi.Name;
		Func&amp;lt;PropertyInfo, PropertyInfo, MemberBinding&amp;gt; bindingsSelector
			= (original, copy) =&amp;gt; 
				Expression.Bind
				(
					copy, 
					Expression.Property(originalParamExpr, original.Name)
				);
		
		var bindings 
			= originalProperties
				.Join
				(
					copyProperties,
					p =&amp;gt; p.Name,
					p =&amp;gt; p.Name,
					(o, c) =&amp;gt; new { Original = o, Copy = c }
				)
				.Where (p =&amp;gt; p.Original.PropertyType == p.Copy.PropertyType)
				.Select (p =&amp;gt; Expression.Bind(p.Copy, Expression.Property(originalParamExpr, p.Original.Name)));
		
		return Expression.Lambda&amp;lt;Func&amp;lt;TOriginal, TCopy&amp;gt;&amp;gt;
			(
				Expression.MemberInit
				(
					Expression.New(typeOfCopy),
					bindings
				),
				originalParamExpr
			);
	}
	
	public static Expression&amp;lt;Func&amp;lt;TOriginal, TCopy&amp;gt;&amp;gt; WithTransform&amp;lt;TOriginal, TCopy, U&amp;gt;
	(
		this Expression&amp;lt;Func&amp;lt;TOriginal, TCopy&amp;gt;&amp;gt; copier, 
		Expression&amp;lt;Func&amp;lt;TOriginal, U&amp;gt;&amp;gt; transform
	)
	{
	
		var visitor = new ParameterReplacementExpressionVisitor(
			Expression.Parameter(typeof(TOriginal)));
		
		// Extract the expression produced by the copier: this represents the initialization of the 
	
		var typeOfCopy = typeof(TCopy);
		var visitedTransform = visitor.Visit(transform) as Expression&amp;lt;Func&amp;lt;TOriginal, U&amp;gt;&amp;gt;;
		var methodCall = (transform.Body as NewExpression);

		var transformations = methodCall.Arguments;
		
		var members = methodCall.Members;
			
		var newCopy = Expression.New(typeOfCopy);
		
		var propertyExpressions = members.Select 
			(
				m =&amp;gt; Expression.Property(newCopy, m.Name)
			);
			
		var bindings = propertyExpressions.Select ((p, n) =&amp;gt; new { Index = n, Property = p.Member })
			.Join
			(
				transformations.Select ((t, n) =&amp;gt; new { Index = n, Transformation = t } ),
				p =&amp;gt; p.Index,
				t =&amp;gt; t.Index,
				(p, t) =&amp;gt; Expression.Bind( p.Property, t.Transformation ) )
			.Union((copier.Body as MemberInitExpression).Bindings);
			
		var memberInit = Expression.MemberInit(newCopy, bindings);
		
		return (Expression&amp;lt;Func&amp;lt;TOriginal, TCopy&amp;gt;&amp;gt;)
			visitor.Visit
			(
				Expression.Lambda&amp;lt;Func&amp;lt;TOriginal, TCopy&amp;gt;&amp;gt;(memberInit, copier.Parameters)
			);
			
	}

}

public class ParameterReplacementExpressionVisitor : ExpressionVisitor
{
	private ParameterExpression _replacementParameter;
	
	public ParameterReplacementExpressionVisitor( ParameterExpression replacementParameter ) 
	{ 
		_replacementParameter = replacementParameter;
	}

	protected override Expression VisitParameter(ParameterExpression node)
	{
		return _replacementParameter;
	}

}

public class Employee 
{ 
	public string Name { get; set; }
	public string Id { get; set; }
	public string Salary { get; set; }
}

public class EmployeeDto 
{
	public string Name { get; set; }
	public int ID { get; set; }
	public decimal Salary { get; set; }
}
&lt;/pre&gt;&lt;img src="http://feeds.feedburner.com/~r/CodeKeepCSharp/~4/CS9fbW3ARls" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/CodeKeepCSharp/~3/CS9fbW3ARls/e27c25d9-82d9-422b-afed-1c1d9a4a6176.aspx</link>
      <pubDate>Mon, 17 Jun 2013 19:54:40 GMT</pubDate>
    <feedburner:origLink>http://www.codekeep.net/snippets/e27c25d9-82d9-422b-afed-1c1d9a4a6176.aspx</feedburner:origLink></item>
    <item>
      <title>Determine if a number contains a specific digit</title>
      <description>Description: You want to return true when looking for the digit 7 in 1070 and false for 9999&lt;br /&gt;&lt;br /&gt;Link: &lt;a href='http://www.codekeep.net/snippets/39e35c95-68e5-4753-8197-3a56f0bcdc32.aspx'&gt;http://www.codekeep.net/snippets/39e35c95-68e5-4753-8197-3a56f0bcdc32.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style='font-size: 9pt;'&gt;public static bool ContainsDigit(this int number, int digit)
{
    Contract.Assert(digit &amp;gt;= 0 &amp;amp;&amp;amp; digit &amp;lt;= 0, &amp;quot;digit must be a single digit!&amp;quot;);

    while (number != 0)
    {
        if (number % 10 == digit) return true;
        number /= 10;
    }
    return false;
}
&lt;/pre&gt;&lt;img src="http://feeds.feedburner.com/~r/CodeKeepCSharp/~4/2jeHRBsJFW4" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/CodeKeepCSharp/~3/2jeHRBsJFW4/39e35c95-68e5-4753-8197-3a56f0bcdc32.aspx</link>
      <pubDate>Thu, 09 May 2013 08:26:54 GMT</pubDate>
    <feedburner:origLink>http://www.codekeep.net/snippets/39e35c95-68e5-4753-8197-3a56f0bcdc32.aspx</feedburner:origLink></item>
    <item>
      <title>Get an assembly level attribute</title>
      <description>Description: Use the following to retrieve an assembly annotated attribute&lt;br /&gt;&lt;br /&gt;Link: &lt;a href='http://www.codekeep.net/snippets/904a8b8c-96e1-4c84-9efd-1e53b7396561.aspx'&gt;http://www.codekeep.net/snippets/904a8b8c-96e1-4c84-9efd-1e53b7396561.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style='font-size: 9pt;'&gt;using System.Reflection;

var result = from assembly in AppDomain.CurrentDomain.GetAssemblies()
             let attribute = assembly.GetCustomAttribute&amp;lt;MyAttribute&amp;gt;()
             where attribute != null
             select attribute;

return result.FirstOrDefault();&lt;/pre&gt;&lt;img src="http://feeds.feedburner.com/~r/CodeKeepCSharp/~4/a_fnizwbq6I" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/CodeKeepCSharp/~3/a_fnizwbq6I/904a8b8c-96e1-4c84-9efd-1e53b7396561.aspx</link>
      <pubDate>Thu, 09 May 2013 08:20:26 GMT</pubDate>
    <feedburner:origLink>http://www.codekeep.net/snippets/904a8b8c-96e1-4c84-9efd-1e53b7396561.aspx</feedburner:origLink></item>
    <item>
      <title>Get Assembly Description</title>
      <description>Description: returns a sting containing the Assembly Description&lt;br /&gt;&lt;br /&gt;Link: &lt;a href='http://www.codekeep.net/snippets/01b6fec5-5dda-43ae-9ae6-46f810ddbd5c.aspx'&gt;http://www.codekeep.net/snippets/01b6fec5-5dda-43ae-9ae6-46f810ddbd5c.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style='font-size: 9pt;'&gt;string Description = ((System.Reflection.AssemblyDescriptionAttribute)
        System.Reflection.Assembly.GetExecutingAssembly().GetCustomAttributes(
        typeof(System.Reflection.AssemblyDescriptionAttribute), false)[0])
        .Description;&lt;/pre&gt;&lt;img src="http://feeds.feedburner.com/~r/CodeKeepCSharp/~4/ixn1dvQzuoY" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/CodeKeepCSharp/~3/ixn1dvQzuoY/01b6fec5-5dda-43ae-9ae6-46f810ddbd5c.aspx</link>
      <pubDate>Fri, 26 Apr 2013 17:22:14 GMT</pubDate>
    <feedburner:origLink>http://www.codekeep.net/snippets/01b6fec5-5dda-43ae-9ae6-46f810ddbd5c.aspx</feedburner:origLink></item>
    <item>
      <title>get assembly copyright</title>
      <description>Description: returns a string of the assembly copyright&lt;br /&gt;&lt;br /&gt;Link: &lt;a href='http://www.codekeep.net/snippets/293be88c-5102-44b0-a931-5caa57c53f48.aspx'&gt;http://www.codekeep.net/snippets/293be88c-5102-44b0-a931-5caa57c53f48.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style='font-size: 9pt;'&gt;string Copyright = ((System.Reflection.AssemblyCopyrightAttribute)
        System.Reflection.Assembly.GetExecutingAssembly().GetCustomAttributes(
        typeof(System.Reflection.AssemblyCopyrightAttribute), false)[0])
        .Copyright;&lt;/pre&gt;&lt;img src="http://feeds.feedburner.com/~r/CodeKeepCSharp/~4/u8iLvdySVlk" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/CodeKeepCSharp/~3/u8iLvdySVlk/293be88c-5102-44b0-a931-5caa57c53f48.aspx</link>
      <pubDate>Fri, 26 Apr 2013 17:19:08 GMT</pubDate>
    <feedburner:origLink>http://www.codekeep.net/snippets/293be88c-5102-44b0-a931-5caa57c53f48.aspx</feedburner:origLink></item>
    <item>
      <title>Form Validation Summary</title>
      <description>Description: Form Validation Summary Example&lt;br /&gt;&lt;br /&gt;Link: &lt;a href='http://www.codekeep.net/snippets/e14a0748-b031-4e94-9c9f-e2df4d81d541.aspx'&gt;http://www.codekeep.net/snippets/e14a0748-b031-4e94-9c9f-e2df4d81d541.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style='font-size: 9pt;'&gt;VALIDATION SUMMARY EXAMPLE

&amp;lt;asp:RangeValidator id=&amp;quot;RangeValidator&amp;quot; runat=&amp;quot;server&amp;quot;
ControlToValidate=&amp;quot;txtValidated&amp;quot; MaximumValue=&amp;quot;10&amp;quot; MinimumValue=&amp;quot;1&amp;quot;
ErrorMessage=&amp;quot;The First Number Is Not In The Range&amp;quot;
Type=&amp;quot;Integer&amp;quot;&amp;gt;
&amp;lt;img src=&amp;quot;ErrorIcon.gif&amp;quot; alt=&amp;quot;Error&amp;quot;&amp;gt;
&amp;lt;/asp:RangeValidator&amp;gt;

&amp;lt;asp:ValidationSummary id=&amp;quot;Errors&amp;quot; runat=&amp;quot;server&amp;quot; ForeColor=&amp;quot;Red&amp;quot; /&amp;gt;
&lt;/pre&gt;&lt;img src="http://feeds.feedburner.com/~r/CodeKeepCSharp/~4/Fq7SLiFCwCc" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/CodeKeepCSharp/~3/Fq7SLiFCwCc/e14a0748-b031-4e94-9c9f-e2df4d81d541.aspx</link>
      <pubDate>Wed, 23 Jan 2013 14:55:40 GMT</pubDate>
    <feedburner:origLink>http://www.codekeep.net/snippets/e14a0748-b031-4e94-9c9f-e2df4d81d541.aspx</feedburner:origLink></item>
    <item>
      <title>Accessors</title>
      <description>Description: Accessors in ASP.NET C#&lt;br /&gt;&lt;br /&gt;Link: &lt;a href='http://www.codekeep.net/snippets/2c971e12-90ef-46a7-81b9-d2b165c8a941.aspx'&gt;http://www.codekeep.net/snippets/2c971e12-90ef-46a7-81b9-d2b165c8a941.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style='font-size: 9pt;'&gt;ACCESSOSRS

public decimal Price
{
get
{
return price;
}
set
{
price = value;
}
}

ACCESSORS SHORT CUT

public decimal Price
{
get;
set;
}
public class Product
{
public string Name { get; set; }
public decimal Price { get; set; }
public string ImageUrl { get; set; }
}
&lt;/pre&gt;&lt;img src="http://feeds.feedburner.com/~r/CodeKeepCSharp/~4/7eTRvObegYw" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/CodeKeepCSharp/~3/7eTRvObegYw/2c971e12-90ef-46a7-81b9-d2b165c8a941.aspx</link>
      <pubDate>Mon, 21 Jan 2013 12:30:08 GMT</pubDate>
    <feedburner:origLink>http://www.codekeep.net/snippets/2c971e12-90ef-46a7-81b9-d2b165c8a941.aspx</feedburner:origLink></item>
    <item>
      <title>Methods and Functions</title>
      <description>Description: Methods and Functions ASP.NET C#&lt;br /&gt;&lt;br /&gt;Link: &lt;a href='http://www.codekeep.net/snippets/a081e60c-6b97-4215-afc1-bf02de58066e.aspx'&gt;http://www.codekeep.net/snippets/a081e60c-6b97-4215-afc1-bf02de58066e.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style='font-size: 9pt;'&gt;METHODS
private int AddNumbers(int number1, int number2)
{
return number1 + number2;
}

OPTIONAL PARAMERS (Always placed at end)

private decimal GetSalesTotalForRegion(int regionID, decimal minSale = 0,
decimal maxSale = Decimal.MaxValue, bool includeTax = false)
{
// Code here.
}

total = GetSalesTotalForRegion(523, maxSale: 5000);

DELEGATES

// Create a delegate variable.
StringFunction functionReference;
// Store a reference to a matching method in the delegate.
functionReference = TranslateEnglishToFrench;
// Run the method that functionReference points to.
// In this case, it will be TranslateEnglishToFrench().
string frenchString = functionReference(&amp;quot;Hello&amp;quot;);
&lt;/pre&gt;&lt;img src="http://feeds.feedburner.com/~r/CodeKeepCSharp/~4/lvHGfOUJhj0" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/CodeKeepCSharp/~3/lvHGfOUJhj0/a081e60c-6b97-4215-afc1-bf02de58066e.aspx</link>
      <pubDate>Mon, 21 Jan 2013 12:29:34 GMT</pubDate>
    <feedburner:origLink>http://www.codekeep.net/snippets/a081e60c-6b97-4215-afc1-bf02de58066e.aspx</feedburner:origLink></item>
    <item>
      <title>If, Switch, Loops</title>
      <description>Description: If, Switch, Loops in ASP.NET C#&lt;br /&gt;&lt;br /&gt;Link: &lt;a href='http://www.codekeep.net/snippets/d735a000-0a54-4d2b-85a6-b783dbf10a78.aspx'&gt;http://www.codekeep.net/snippets/d735a000-0a54-4d2b-85a6-b783dbf10a78.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style='font-size: 9pt;'&gt;IF

if (myNumber &amp;gt; 10)
{
// Do something.
}
else if (myString == &amp;quot;hello&amp;quot;)
{
// Do something.
}

SWITCH

switch (myNumber)
{
case 1:
// Do something.
break;
case 2:
case 3:
// Do something.
break;
default:
// Do something.
break;
}

LOOPS

for (int i = 0; i &amp;lt; 10; i++)
{
// This code executes ten times.
System.Diagnostics.Debug.Write(i);
}
int[] intArray = {1,2,3};
foreach (int num in intArray)
{
num += 1;
}
string[] stringArray = {&amp;quot;one&amp;quot;, &amp;quot;two&amp;quot;, &amp;quot;three&amp;quot;};
foreach (string element in stringArray)
{
System.Diagnostics.Debug.Write(element + &amp;quot; &amp;quot;);
}
int i = 0;
while (i &amp;lt; 10)
{
i += 1;
// This code executes ten times.
}
int i = 0;
do
{
i += 1;
// This code executes ten times.
}
while (i &amp;lt; 10);
&lt;/pre&gt;&lt;img src="http://feeds.feedburner.com/~r/CodeKeepCSharp/~4/J0xCVTwh-gg" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/CodeKeepCSharp/~3/J0xCVTwh-gg/d735a000-0a54-4d2b-85a6-b783dbf10a78.aspx</link>
      <pubDate>Mon, 21 Jan 2013 12:21:12 GMT</pubDate>
    <feedburner:origLink>http://www.codekeep.net/snippets/d735a000-0a54-4d2b-85a6-b783dbf10a78.aspx</feedburner:origLink></item>
    <item>
      <title>Operators</title>
      <description>Description: Operators in ASP.NET C#&lt;br /&gt;&lt;br /&gt;Link: &lt;a href='http://www.codekeep.net/snippets/fcb2b082-fedc-44e2-bfe2-da60d25eea31.aspx'&gt;http://www.codekeep.net/snippets/fcb2b082-fedc-44e2-bfe2-da60d25eea31.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style='font-size: 9pt;'&gt;== Equal to.

!= Not Equal to.

&amp;amp;&amp;amp; Logical and (evaluates to true only if both expressions are true). If the first expression is false,
the second expression is not evaluated.

|| Logical or (evaluates to true if either expression is true). If the first expression is true, the
second expression is not evaluated.

&lt;/pre&gt;&lt;img src="http://feeds.feedburner.com/~r/CodeKeepCSharp/~4/oKb3bhooFnY" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/CodeKeepCSharp/~3/oKb3bhooFnY/fcb2b082-fedc-44e2-bfe2-da60d25eea31.aspx</link>
      <pubDate>Mon, 21 Jan 2013 12:19:35 GMT</pubDate>
    <feedburner:origLink>http://www.codekeep.net/snippets/fcb2b082-fedc-44e2-bfe2-da60d25eea31.aspx</feedburner:origLink></item>
    <item>
      <title>Date Time</title>
      <description>Description: Date Time in ASP.NET C#&lt;br /&gt;&lt;br /&gt;Link: &lt;a href='http://www.codekeep.net/snippets/8d337716-0bb0-430c-a07d-8296761e2bbf.aspx'&gt;http://www.codekeep.net/snippets/8d337716-0bb0-430c-a07d-8296761e2bbf.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style='font-size: 9pt;'&gt;DATE

DateTime myDate = DateTime.Now;
myDate = myDate.AddDays(100);
string dateString = myDate.Year.ToString();
DateTime myDate1 = DateTime.Now;
DateTime myDate2 = DateTime.Now.AddHours(3000);

TIME

TimeSpan difference;
difference = myDate2.Subtract(myDate1);
double numberOfMinutes;
numberOfMinutes = difference.TotalMinutes;
&lt;/pre&gt;&lt;img src="http://feeds.feedburner.com/~r/CodeKeepCSharp/~4/9IvPNp555fk" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/CodeKeepCSharp/~3/9IvPNp555fk/8d337716-0bb0-430c-a07d-8296761e2bbf.aspx</link>
      <pubDate>Mon, 21 Jan 2013 12:19:00 GMT</pubDate>
    <feedburner:origLink>http://www.codekeep.net/snippets/8d337716-0bb0-430c-a07d-8296761e2bbf.aspx</feedburner:origLink></item>
    <item>
      <title>ENUM</title>
      <description>Description: ENUM in ASP.NET C#&lt;br /&gt;&lt;br /&gt;Link: &lt;a href='http://www.codekeep.net/snippets/68da4578-6b07-45c8-a670-eea92dd0aee5.aspx'&gt;http://www.codekeep.net/snippets/68da4578-6b07-45c8-a670-eea92dd0aee5.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style='font-size: 9pt;'&gt;enum UserType
{
Admin,
Guest,
Other
}

UserType newUserType = UserType.Admin;
&lt;/pre&gt;&lt;img src="http://feeds.feedburner.com/~r/CodeKeepCSharp/~4/1TVObn31L-g" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/CodeKeepCSharp/~3/1TVObn31L-g/68da4578-6b07-45c8-a670-eea92dd0aee5.aspx</link>
      <pubDate>Mon, 21 Jan 2013 12:18:05 GMT</pubDate>
    <feedburner:origLink>http://www.codekeep.net/snippets/68da4578-6b07-45c8-a670-eea92dd0aee5.aspx</feedburner:origLink></item>
    <item>
      <title>Arrays</title>
      <description>Description: Arrays in ASP.NET C#&lt;br /&gt;&lt;br /&gt;Link: &lt;a href='http://www.codekeep.net/snippets/417a052e-4b0c-4d9d-86ec-37434d603c74.aspx'&gt;http://www.codekeep.net/snippets/417a052e-4b0c-4d9d-86ec-37434d603c74.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style='font-size: 9pt;'&gt;ARRAY

string[] stringArray = new string[4];
string[] stringArray = {&amp;quot;1&amp;quot;, &amp;quot;2&amp;quot;, &amp;quot;3&amp;quot;, &amp;quot;4&amp;quot;};
int[,] intArray = new int[2, 4];
int[,] intArray = {{1, 2}, {3, 4}, {5, 6}, {7, 8}};

ARRAY LIST

ArrayList dynamicList = new ArrayList();
dynamicList.Add(&amp;quot;one&amp;quot;);
dynamicList.Add(&amp;quot;two&amp;quot;);
dynamicList.Add(&amp;quot;three&amp;quot;);
&lt;/pre&gt;&lt;img src="http://feeds.feedburner.com/~r/CodeKeepCSharp/~4/W6q21EseQvc" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/CodeKeepCSharp/~3/W6q21EseQvc/417a052e-4b0c-4d9d-86ec-37434d603c74.aspx</link>
      <pubDate>Mon, 21 Jan 2013 12:17:37 GMT</pubDate>
    <feedburner:origLink>http://www.codekeep.net/snippets/417a052e-4b0c-4d9d-86ec-37434d603c74.aspx</feedburner:origLink></item>
    <item>
      <title>Escape Characers</title>
      <description>Description: Escape Characers ASP.NET C#&lt;br /&gt;&lt;br /&gt;Link: &lt;a href='http://www.codekeep.net/snippets/f3d23071-34a2-4f6d-a2e7-410de9455a60.aspx'&gt;http://www.codekeep.net/snippets/f3d23071-34a2-4f6d-a2e7-410de9455a60.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style='font-size: 9pt;'&gt;NUMBERS
M (decimal)
D (double)
F (float)
L (long)
STRINGS
\&amp;quot; (double quote)
\n (new line)
\t (horizontal tab)
\\ (backward slash) or @&amp;quot;string&amp;quot;
EXAMPLES
string path = &amp;quot;c:\\MyApp\\MyFiles&amp;quot;;    OR
string path = @&amp;quot;c:\MyApp\MyFiles&amp;quot;;
&lt;/pre&gt;&lt;img src="http://feeds.feedburner.com/~r/CodeKeepCSharp/~4/RI4LVkvAlD0" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/CodeKeepCSharp/~3/RI4LVkvAlD0/f3d23071-34a2-4f6d-a2e7-410de9455a60.aspx</link>
      <pubDate>Mon, 21 Jan 2013 12:16:38 GMT</pubDate>
    <feedburner:origLink>http://www.codekeep.net/snippets/f3d23071-34a2-4f6d-a2e7-410de9455a60.aspx</feedburner:origLink></item>
    <item>
      <title>How to get the value of a dynamic property when you just have its name</title>
      <description>Description: You cant use normal reflection techniques on dynamic objects so this routine will retrieve the value of a property given its name.&lt;br /&gt;&lt;br /&gt;Link: &lt;a href='http://www.codekeep.net/snippets/35fa5e9f-c6ea-4848-9eae-d3c64f5b4acd.aspx'&gt;http://www.codekeep.net/snippets/35fa5e9f-c6ea-4848-9eae-d3c64f5b4acd.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style='font-size: 9pt;'&gt;private static object GetDynamicValue(this DynamicObject obj, string memberName)
{
    var binder = Binder.GetMember(CSharpBinderFlags.None, memberName, obj.GetType(),
                                  new[] {CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.None, null)});
    var callsite = CallSite&amp;lt;Func&amp;lt;CallSite, object, object&amp;gt;&amp;gt;.Create(binder);
    return callsite.Target(callsite, obj);
}
&lt;/pre&gt;&lt;img src="http://feeds.feedburner.com/~r/CodeKeepCSharp/~4/_5V0SM1vdsA" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/CodeKeepCSharp/~3/_5V0SM1vdsA/35fa5e9f-c6ea-4848-9eae-d3c64f5b4acd.aspx</link>
      <pubDate>Sun, 20 Jan 2013 05:04:36 GMT</pubDate>
    <feedburner:origLink>http://www.codekeep.net/snippets/35fa5e9f-c6ea-4848-9eae-d3c64f5b4acd.aspx</feedburner:origLink></item>
    <item>
      <title>Confirm closing form</title>
      <description>Description: Prompt the user is he/she wants the window to close down&lt;br /&gt;&lt;br /&gt;Link: &lt;a href='http://www.codekeep.net/snippets/7106640c-fc1b-4fc9-8b4a-854b588137cc.aspx'&gt;http://www.codekeep.net/snippets/7106640c-fc1b-4fc9-8b4a-854b588137cc.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style='font-size: 9pt;'&gt;private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    const string message =
        &amp;quot;Are you sure that you would like to close the form?&amp;quot;;
    const string caption = &amp;quot;Confirm Action&amp;quot;;
    var result = MessageBox.Show(message, caption,
                                 MessageBoxButtons.YesNo,
                                 MessageBoxIcon.Question);

    // If the no button was pressed ...
    if (result == DialogResult.No)
    {
        // cancel the closure of the form.
        e.Cancel = true;
    }
}
&lt;/pre&gt;&lt;img src="http://feeds.feedburner.com/~r/CodeKeepCSharp/~4/MdQP_xAvd6U" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/CodeKeepCSharp/~3/MdQP_xAvd6U/7106640c-fc1b-4fc9-8b4a-854b588137cc.aspx</link>
      <pubDate>Thu, 17 Jan 2013 16:52:07 GMT</pubDate>
    <feedburner:origLink>http://www.codekeep.net/snippets/7106640c-fc1b-4fc9-8b4a-854b588137cc.aspx</feedburner:origLink></item>
    <item>
      <title>Helper routine to print an objects properties out to the console</title>
      <description>Description: Iterates through an objects properties and prints to the console output (or any TextWriter come to that)&lt;br /&gt;&lt;br /&gt;Link: &lt;a href='http://www.codekeep.net/snippets/d4d65b15-a4a1-4566-a703-a590aa54f4ce.aspx'&gt;http://www.codekeep.net/snippets/d4d65b15-a4a1-4566-a703-a590aa54f4ce.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style='font-size: 9pt;'&gt;// ReSharper disable CheckNamespace

using System;
using System.Collections.Generic;
using System.IO;
using System.Text;

namespace Smithfield.IO
{
    internal static class ObjectExtender
    {
        public static void Print&amp;lt;T&amp;gt;(this TextWriter writer, T obj, string name = null)
        {
            writer.WriteLine(obj.Print(name));        
        }

        public static void Print&amp;lt;T&amp;gt;(this TextWriter writer, T[] array, string name = null)
        {
            Print(writer, (IEnumerable&amp;lt;T&amp;gt;)array, name);
        }

        public static void Print&amp;lt;T&amp;gt;(this TextWriter writer, IEnumerable&amp;lt;T&amp;gt; collection, string name = null)
        {
            foreach (var item in collection)
            {
                writer.WriteLine(item.Print(name));
            }
        }

        public static string Print&amp;lt;T&amp;gt;(this T @this, string name = null)
        {
            var result = new StringBuilder();
            Print(name, typeof (T), @this, result, 0);
            return result.ToString().TrimEnd('\n');
        }

        private static void Print(string name, Type type, object obj, StringBuilder builder, int indent)
        {
            if (type == typeof(string) || type.IsValueType)
            {
                builder.AppendFormat(&amp;quot;{0}{1}: {2} ({3})\n&amp;quot;, new string(' ', indent*4), name, obj, type.Name);
                return;
            }

            if (string.IsNullOrEmpty(name)) name = type.Name;

            builder.AppendFormat(&amp;quot;{0} {1} {2}\n&amp;quot;, type.Name, obj == null ? &amp;quot;(null)&amp;quot; : &amp;quot;&amp;quot;,
                                 string.Equals(name, type.Name, StringComparison.CurrentCultureIgnoreCase)
                                     ? &amp;quot;&amp;quot;
                                     : &amp;quot;(&amp;quot; + type.Name + &amp;quot;)&amp;quot;);
            if (obj == null) return;

            var properties = type.GetProperties();

            foreach (var property in properties)
            {
                Print(property.Name, property.PropertyType, property.GetValue(obj, null), builder, (indent + 1));
            }
        }
    }
}
&lt;/pre&gt;&lt;img src="http://feeds.feedburner.com/~r/CodeKeepCSharp/~4/HlsEQOkNNEQ" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/CodeKeepCSharp/~3/HlsEQOkNNEQ/d4d65b15-a4a1-4566-a703-a590aa54f4ce.aspx</link>
      <pubDate>Tue, 15 Jan 2013 15:38:24 GMT</pubDate>
    <feedburner:origLink>http://www.codekeep.net/snippets/d4d65b15-a4a1-4566-a703-a590aa54f4ce.aspx</feedburner:origLink></item>
    <item>
      <title>C# Count the Lines in a File</title>
      <description>Description: Fast method for counting lines in a file, ignores single CR or LF characters.   Used for files coming from Unix source systems.&lt;br /&gt;&lt;br /&gt;Link: &lt;a href='http://www.codekeep.net/snippets/7ce1fd55-5fc7-4eea-9431-f21dd892713e.aspx'&gt;http://www.codekeep.net/snippets/7ce1fd55-5fc7-4eea-9431-f21dd892713e.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style='font-size: 9pt;'&gt;        /// &amp;lt;summary&amp;gt;
        /// count the lines in a text-based file, a new line is indicated by a CRLF
        ///   this method ignores single CR or LF in the line count (which the .NET
        ///   read line methods on file or stream objects will count)
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;param name=&amp;quot;filePath&amp;quot;&amp;gt;the path to the file&amp;lt;/param&amp;gt;
        /// &amp;lt;returns&amp;gt;-1 on failure, otherwise, the line count&amp;lt;/returns&amp;gt;
        public static long CountLinesInFile(string filePath)
        {
            try
            {
                if (!File.Exists(filePath))
                    return -1;
                var last = -1;
                long count = 0;
                long lastCrLf = -1;
                long contiguous = 0;
                var dataFound = false;
                using (var fs = new FileStream(filePath, FileMode.Open, FileAccess.Read))
                {
                    const int max = 10485760; // 10 MB buffer
                    var buffer = new byte[Math.Min(fs.Length, max)]; 
                    var read = fs.Read(buffer, 0, buffer.Length);
                    if (read &amp;gt; 0)
                        dataFound = true; // needed to count 1 line if no CRLF is present
                    while (read &amp;gt; 0)
                    {
                        // count the number of CRLF instances in the buffer
                        //  ignore single CR or LF
                        for (var i = 0; i &amp;lt; read; i++)
                        {
                            var current = buffer[i];
                            if (last == 13 &amp;amp;&amp;amp; current == 10)
                            {
                                count++;
                                lastCrLf++;
                            }
                            else if (last == 10 &amp;amp;&amp;amp; current == 13)
                                lastCrLf++;
                            else
                                lastCrLf = 0;

                            switch (lastCrLf)
                            {
                                case 0:
                                    // reset the contiguous counter
                                    contiguous = 0;
                                    break;
                                case 3:
                                    // CRLF found back to back
                                    contiguous++;
                                    lastCrLf = 1;
                                    break;
                            }
                            
                            last = current;
                        }
                        read = fs.Read(buffer, 0, buffer.Length);
                    }
                }
                if (contiguous &amp;gt; 0) // remove empty contiguous lines from the end of the file
                    count = count - contiguous;
                if (count == 0 &amp;amp;&amp;amp; dataFound) // make sure a file with at least 1 byte reflects 1 line even if no CRLF is present
                    count = 1;
                return count;
            }
            catch (Exception)
            {
                return -1;
            }
        }
&lt;/pre&gt;&lt;img src="http://feeds.feedburner.com/~r/CodeKeepCSharp/~4/QZ1UD-nKWe8" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/CodeKeepCSharp/~3/QZ1UD-nKWe8/7ce1fd55-5fc7-4eea-9431-f21dd892713e.aspx</link>
      <pubDate>Wed, 09 Jan 2013 16:49:34 GMT</pubDate>
    <feedburner:origLink>http://www.codekeep.net/snippets/7ce1fd55-5fc7-4eea-9431-f21dd892713e.aspx</feedburner:origLink></item>
    <item>
      <title>C# CSV Split Method</title>
      <description>Description: Fast method for splitting data using a delimiter&lt;br /&gt;&lt;br /&gt;Link: &lt;a href='http://www.codekeep.net/snippets/8392d35c-dd81-4c40-b5ba-b9c7339066cb.aspx'&gt;http://www.codekeep.net/snippets/8392d35c-dd81-4c40-b5ba-b9c7339066cb.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style='font-size: 9pt;'&gt;#region &amp;quot; CSV Split Helpers &amp;quot;

        private static readonly object SplittersLock = new object();
        private static Dictionary&amp;lt;string, Regex&amp;gt; _splitters;

        /// &amp;lt;summary&amp;gt;
        /// split a string on a delimiter with support for qualifiers and
        ///   ignoring case
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;param name=&amp;quot;expression&amp;quot;&amp;gt;the string to split&amp;lt;/param&amp;gt;
        /// &amp;lt;param name=&amp;quot;delimiter&amp;quot;&amp;gt;the character(s) to split on&amp;lt;/param&amp;gt;
        /// &amp;lt;param name=&amp;quot;qualifier&amp;quot;&amp;gt;the text qualifier (any delimiters with a text qualifier block will not cause a split), default is double-quotes&amp;lt;/param&amp;gt;
        /// &amp;lt;param name=&amp;quot;ignoreCase&amp;quot;&amp;gt;should the case of the expression and delimiter be ignored?  this is only useful if the delimiter is a character
        ///                          that supports case (like a-z, A-Z)&amp;lt;/param&amp;gt;
        /// &amp;lt;returns&amp;gt;the split strings&amp;lt;/returns&amp;gt;
        public static string[] Split(string expression, string delimiter = &amp;quot;,&amp;quot;, string qualifier = &amp;quot;\&amp;quot;&amp;quot;, bool ignoreCase = false)
        {
            if (_splitters == null)
                _splitters = new Dictionary&amp;lt;string, Regex&amp;gt;();
            var statement = string.Format(&amp;quot;{0}(?=(?:[^{1}]*{1}[^{1}]*{1})*(?![^{1}]*{1}))&amp;quot;, Regex.Escape(delimiter), Regex.Escape(qualifier));

            lock (SplittersLock)
            {
                if (!_splitters.ContainsKey(statement))
                {
                    var options = RegexOptions.Compiled | RegexOptions.Multiline;
                    if (ignoreCase)
                        options = options | RegexOptions.IgnoreCase;
                    var regx = new Regex(statement, options);
                    _splitters.Add(statement, regx);
                }
            }

            return _splitters[statement].Split(expression);
        }

        #endregion&lt;/pre&gt;&lt;img src="http://feeds.feedburner.com/~r/CodeKeepCSharp/~4/p_R8fj1mpD8" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/CodeKeepCSharp/~3/p_R8fj1mpD8/8392d35c-dd81-4c40-b5ba-b9c7339066cb.aspx</link>
      <pubDate>Wed, 09 Jan 2013 16:48:12 GMT</pubDate>
    <feedburner:origLink>http://www.codekeep.net/snippets/8392d35c-dd81-4c40-b5ba-b9c7339066cb.aspx</feedburner:origLink></item>
    <item>
      <title>Suppress 'Missing XML comment for publicly visible type or member' warning messages</title>
      <description>Description: Its because you have set the project property to emit and XML documentation file.&lt;br /&gt;&lt;br /&gt;Link: &lt;a href='http://www.codekeep.net/snippets/09ac65f2-0766-4709-b488-cdf55f6a6429.aspx'&gt;http://www.codekeep.net/snippets/09ac65f2-0766-4709-b488-cdf55f6a6429.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style='font-size: 9pt;'&gt;In project properties either deselect XML Documentation file in the Build tab.

Or in the Suppress Warnings enter the following value:

1570,1571,1572,1573,1574,1587,1591&lt;/pre&gt;&lt;img src="http://feeds.feedburner.com/~r/CodeKeepCSharp/~4/e7Y3jRZAcYU" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/CodeKeepCSharp/~3/e7Y3jRZAcYU/09ac65f2-0766-4709-b488-cdf55f6a6429.aspx</link>
      <pubDate>Wed, 09 Jan 2013 04:35:26 GMT</pubDate>
    <feedburner:origLink>http://www.codekeep.net/snippets/09ac65f2-0766-4709-b488-cdf55f6a6429.aspx</feedburner:origLink></item>
    <item>
      <title>Displaying a pdf file saving a pdf file from an Url</title>
      <description>Description: Displaying a pdf file saving a pdf file from an Url&lt;br /&gt;&lt;br /&gt;Link: &lt;a href='http://www.codekeep.net/snippets/2e2ba353-f2f0-4a41-b072-c66ba1cfa6ee.aspx'&gt;http://www.codekeep.net/snippets/2e2ba353-f2f0-4a41-b072-c66ba1cfa6ee.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style='font-size: 9pt;'&gt;   HttpWebRequest request = (HttpWebRequest)WebRequest.Create(&amp;quot;http://192.168.2.34:9704/xmlpserver/ModuleReport/WSS/Reports/HTDuplicateBill.xdo?_xpf=&amp;amp;_xpt=1&amp;amp;_xf=pdf&amp;amp;id=weblogic&amp;amp;passwd=Oracle11g&amp;amp;C_NO=000289008039&amp;amp;BILL_MNTH=10&amp;amp;BILL_YEAR=2012&amp;quot;);
            request.Timeout = 1200000;
            CookieContainer cookieContainer = new CookieContainer();
            request.CookieContainer = cookieContainer;
            HttpWebResponse myResp = (HttpWebResponse)request.GetResponse();
            Stream stream = myResp.GetResponseStream();
            byte[] data = ReadFully(stream);
 
            Response.Clear();
            Response.ContentType = &amp;quot;application/pdf&amp;quot;;
            Response.AddHeader(&amp;quot;Content-Disposition&amp;quot;, &amp;quot;attachment;filename=xx.pdf&amp;quot;);
            Response.BinaryWrite(data);
        }
 
        public static byte[] ReadFully(Stream input)
        {
            byte[] buffer = new byte[16 * 1024];
            using (MemoryStream ms = new MemoryStream())
            {
                int read;
                while ((read = input.Read(buffer, 0, buffer.Length)) &amp;gt; 0)
                {
                    ms.Write(buffer, 0, read);
                }
                return ms.ToArray();
            }
        }&lt;/pre&gt;&lt;img src="http://feeds.feedburner.com/~r/CodeKeepCSharp/~4/tC5h5IBFr4s" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/CodeKeepCSharp/~3/tC5h5IBFr4s/2e2ba353-f2f0-4a41-b072-c66ba1cfa6ee.aspx</link>
      <pubDate>Mon, 07 Jan 2013 05:31:02 GMT</pubDate>
    <feedburner:origLink>http://www.codekeep.net/snippets/2e2ba353-f2f0-4a41-b072-c66ba1cfa6ee.aspx</feedburner:origLink></item>
    <item>
      <title>Notification of Console Closure</title>
      <description>Description: Capture various ways that the console can be closed.
&lt;br /&gt;&lt;br /&gt;Link: &lt;a href='http://www.codekeep.net/snippets/76298cc5-8225-472a-bf43-a0ea0b7d0c0e.aspx'&gt;http://www.codekeep.net/snippets/76298cc5-8225-472a-bf43-a0ea0b7d0c0e.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style='font-size: 9pt;'&gt;using System;
using System.Runtime.InteropServices;

namespace Smithfield
{
    public static class Application
    {
        [DllImport(&amp;quot;Kernel32&amp;quot;)]
        private static extern bool SetConsoleCtrlHandler(ControlEventHandler handler, bool add);

        private delegate bool ControlEventHandler(ControleEvent ctrlEvent);
        private static readonly ControlEventHandler Handler;

        public enum ControleEvent
        {
            CTRL_C_EVENT = 0,
            CTRL_BREAK_EVENT = 1,
            CTRL_CLOSE_EVENT = 2,
            CTRL_LOGOFF_EVENT = 5,
            CTRL_SHUTDOWN_EVENT = 6
        }

        public static event EventHandler ApplicationExit;

        static Application()
        {
            Handler = Handle;
            SetConsoleCtrlHandler(Handler, true);
        }

        private static bool Handle(ControleEvent sig)
        {
            var exitEvent = ApplicationExit;
            if (exitEvent == null || sig == ControleEvent.CTRL_BREAK_EVENT) return true;

            try
            {
                exitEvent(null, EventArgs.Empty);
            }
            catch
            {
               // no-op
            }
            return true;
        } 
    }
}&lt;/pre&gt;&lt;img src="http://feeds.feedburner.com/~r/CodeKeepCSharp/~4/x8_bUKognOo" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/CodeKeepCSharp/~3/x8_bUKognOo/76298cc5-8225-472a-bf43-a0ea0b7d0c0e.aspx</link>
      <pubDate>Tue, 01 Jan 2013 11:34:28 GMT</pubDate>
    <feedburner:origLink>http://www.codekeep.net/snippets/76298cc5-8225-472a-bf43-a0ea0b7d0c0e.aspx</feedburner:origLink></item>
    <item>
      <title>Invoke a ConstructoInfo with optional parameters</title>
      <description>Description: A useful routine when you want to invoke a ConstructorInfo but have some parameters set to their default values.
Note: This does not account for 'named' parameters as its based on left to right fill.&lt;br /&gt;&lt;br /&gt;Link: &lt;a href='http://www.codekeep.net/snippets/64aaaefd-4e16-4825-bb90-5fe51ea8ab23.aspx'&gt;http://www.codekeep.net/snippets/64aaaefd-4e16-4825-bb90-5fe51ea8ab23.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style='font-size: 9pt;'&gt;private static object InvokeCtorWithOptionalParameters(ConstructorInfo ctor, params object[] args)
{
    // we assume args fill from the left (otherwise non-named)

    var parameters = ctor.GetParameters();
    var arguments = new object[parameters.Length];

    Array.Copy(args, arguments, Math.Min(args.Length, arguments.Length));

    for (var i = args.Length; i &amp;lt; arguments.Length; i++)
        arguments[i] = System.Type.Missing;

    return
        ctor.Invoke(
            BindingFlags.OptionalParamBinding | BindingFlags.InvokeMethod | BindingFlags.CreateInstance,
            null,
            arguments,
            CultureInfo.InvariantCulture);
}
&lt;/pre&gt;&lt;img src="http://feeds.feedburner.com/~r/CodeKeepCSharp/~4/JMH7A0ESGoA" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/CodeKeepCSharp/~3/JMH7A0ESGoA/64aaaefd-4e16-4825-bb90-5fe51ea8ab23.aspx</link>
      <pubDate>Sun, 30 Dec 2012 14:52:28 GMT</pubDate>
    <feedburner:origLink>http://www.codekeep.net/snippets/64aaaefd-4e16-4825-bb90-5fe51ea8ab23.aspx</feedburner:origLink></item>
    <item>
      <title>A timer the 'fires' at set intervals (concept)</title>
      <description>Description: A timer the 'fires' at set intervals past the hour (i.e. every 15 minutes). Please not this is a proof of concept so please test before us. If there is a more efficient algorithm for calculating 'next' please drop me a line.&lt;br /&gt;&lt;br /&gt;Link: &lt;a href='http://www.codekeep.net/snippets/9c3e2e29-fd93-45ff-9e03-a6a8fc4ead53.aspx'&gt;http://www.codekeep.net/snippets/9c3e2e29-fd93-45ff-9e03-a6a8fc4ead53.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style='font-size: 9pt;'&gt;// ReSharper disable CheckNamespace

using System;
using System.Diagnostics.Contracts;
using System.Threading;

namespace Smithfield
{
    public interface ITimer : IDisposable
    {
        void Start();
        event EventHandler OnTime;
    }

    class IntervalTimer : ITimer
    {
        private volatile Timer _timer;

        public IntervalTimer(int intervalInMinutes)
        {
            Contract.Assert(intervalInMinutes &amp;gt; 0, &amp;quot;intervalInMinutes must be positive!&amp;quot;);
            Interval = intervalInMinutes;
        }

        public event EventHandler OnTime;
        public int Interval { get; private set; }

        public void Start()
        {
            CheckDispose();
            _timer = new Timer(DoOnTime, null, GetNext(), TimeSpan.FromMinutes(Interval));
        }

        public void Stop()
        {
            var timer = _timer;
            _timer = null;
            if (timer != null) timer.Dispose();
        }

        private void DoOnTime(object state)
        {
            var evnt = OnTime;
            if (evnt != null) evnt(this, EventArgs.Empty);
        }

        private TimeSpan GetNext()
        {
            var now = DateTime.Now;
            return now.Date.AddMinutes(((((int)(now - now.Date).TotalMinutes / Interval) + 1) * Interval)) - now;
        }
        
        #region Implementation of IDisposable idiom

        /// &amp;lt;summary&amp;gt;
        /// Ensure that &amp;lt;see cref=&amp;quot;Dispose(bool)&amp;quot;/&amp;gt; is called on destruction.
        /// &amp;lt;/summary&amp;gt;
        ~IntervalTimer()
        {
            Dispose(false);
        }

        /// &amp;lt;summary&amp;gt;
        /// &amp;lt;see langword=&amp;quot;true&amp;quot;/&amp;gt; of the &amp;lt;c&amp;gt;UnitOfWork&amp;lt;/c&amp;gt; has been disposed;
        /// otherwise, &amp;lt;see langword=&amp;quot;false&amp;quot;/&amp;gt;.
        /// &amp;lt;/summary&amp;gt;
        protected bool Disposed { get; private set; }

        /// &amp;lt;summary&amp;gt;
        /// Performs application-defined tasks associated with freeing,
        /// releasing, or resetting unmanaged resources.
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;filterpriority&amp;gt;2&amp;lt;/filterpriority&amp;gt;
        void IDisposable.Dispose()
        {
            Dispose(true);
        }

        /// &amp;lt;summary&amp;gt;
        /// Implements the 'Dispose' idiom.
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;param name=&amp;quot;disposing&amp;quot;&amp;gt;
        /// &amp;lt;see langword=&amp;quot;true&amp;quot;/&amp;gt; if called via the &amp;lt;see cref=&amp;quot;IDisposable&amp;quot;/&amp;gt; 
        /// &amp;lt;see cref=&amp;quot;IDisposable.Dispose&amp;quot;/&amp;gt; interface; otherwise 
        /// &amp;lt;see langword=&amp;quot;false&amp;quot;/&amp;gt;.
        /// &amp;lt;/param&amp;gt;
        protected virtual void Dispose(bool disposing)
        {
            if (Disposed) return;
            try
            {
                Disposed = true;
                Stop();
            }
            finally
            {
                if (disposing) GC.SuppressFinalize(this);
            }
        }

        /// &amp;lt;summary&amp;gt;
        /// Asserts that the &amp;lt;see cref=&amp;quot;Timer&amp;quot;/&amp;gt; instance is not &amp;lt;see cref=&amp;quot;Disposed&amp;quot;/&amp;gt;.
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;param name=&amp;quot;message&amp;quot;&amp;gt;
        /// The &amp;lt;see cref=&amp;quot;ObjectDisposedException&amp;quot;/&amp;gt; error &amp;lt;see cref=&amp;quot;Exception.Message&amp;quot;/&amp;gt;. A
        /// default &amp;lt;em&amp;gt;message&amp;lt;/em&amp;gt; will be displayed if the parameter is &amp;lt;see langword=&amp;quot;null&amp;quot;/&amp;gt;.
        /// &amp;lt;/param&amp;gt;
        /// &amp;lt;exception cref=&amp;quot;ObjectDisposedException&amp;quot;&amp;gt;
        /// Throw when &amp;lt;see cref=&amp;quot;Disposed&amp;quot;/&amp;gt; is &amp;lt;see langword=&amp;quot;true&amp;quot;/&amp;gt;.
        /// &amp;lt;/exception&amp;gt;
        protected virtual void CheckDispose(string message = null)
        {
            if (Disposed)
            {
                if (message == null)
                    message = string.Format(&amp;quot;Cannot access a disposed ({0})&amp;quot;, GetType().Name);
                throw new ObjectDisposedException(message);
            }
        }

        #endregion
    }
}&lt;/pre&gt;&lt;img src="http://feeds.feedburner.com/~r/CodeKeepCSharp/~4/_AMavnTslio" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/CodeKeepCSharp/~3/_AMavnTslio/9c3e2e29-fd93-45ff-9e03-a6a8fc4ead53.aspx</link>
      <pubDate>Fri, 21 Dec 2012 14:02:34 GMT</pubDate>
    <feedburner:origLink>http://www.codekeep.net/snippets/9c3e2e29-fd93-45ff-9e03-a6a8fc4ead53.aspx</feedburner:origLink></item>
  </channel>
</rss>
