<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Michael E. Chancey Jr. &#187; Extension</title>
	<atom:link href="http://michael.chanceyjr.com/tag/extension/feed/" rel="self" type="application/rss+xml" />
	<link>http://michael.chanceyjr.com</link>
	<description></description>
	<lastBuildDate>Fri, 20 May 2011 03:43:18 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>TCP Message Framework</title>
		<link>http://michael.chanceyjr.com/useful-code/tcp-message-framework/</link>
		<comments>http://michael.chanceyjr.com/useful-code/tcp-message-framework/#comments</comments>
		<pubDate>Fri, 03 Dec 2010 03:33:25 +0000</pubDate>
		<dc:creator>Michael E. Chancey Jr.</dc:creator>
				<category><![CDATA[Useful Code]]></category>
		<category><![CDATA[Array]]></category>
		<category><![CDATA[Binary]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[C-Sharp]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Compression]]></category>
		<category><![CDATA[CSharp]]></category>
		<category><![CDATA[Extension]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Message]]></category>
		<category><![CDATA[Serialize]]></category>
		<category><![CDATA[Stream]]></category>
		<category><![CDATA[String]]></category>
		<category><![CDATA[TCP]]></category>
		<category><![CDATA[TCP/IP]]></category>

		<guid isPermaLink="false">http://michael.chanceyjr.com/?p=692</guid>
		<description><![CDATA[TCP Message Framework is a simple framework built to make transport of TCP messages via C# a little easier. I have devised a method of sending messages and unpacking them on the other side that requires no additional coding to handle any new message type a programmer might come up with. Need to create a [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://michael.chanceyjr.com/site/wp-content/uploads/2010/12/MessageFramework.png"><img src="http://michael.chanceyjr.com/site/wp-content/uploads/2010/12/MessageFramework-150x109.png" alt="" title="MessageFramework" width="150" height="109" class="alignleft size-thumbnail wp-image-689" /></a><br />
TCP Message Framework is a simple framework built to make transport of TCP messages via C# a little easier.  I have devised a method of sending messages and unpacking them on the other side that requires no additional coding to handle any new message type a programmer might come up with.  Need to create a keep-alive packet.  Simply inherit the message class, write the server side and client side code and you are done.  The transport and unwrapping of the message is all handled by the framework.</p>
<p>I used a very similar method when writing my instant messenger client/server.  There is some overhead but when weighed out against it&#8217;s simplcity its very minimal.  If you would like you can download the entire sample project or view the code through this website.<br />
<h3><a href="http://michael.chanceyjr.com/site/wp-content/uploads/2010/12/MessageFramework.zip">Download Sample Project</a> &#8211; <a href="http://michael.chanceyjr.com/free-stuff/tcp-message-framework/">View Code</a></h3>



Share


	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=TCP%20Message%20Framework%20-%20http%3A%2F%2Fmichael.chanceyjr.com%2Fuseful-code%2Ftcp-message-framework%2F" title="Twitter"><img src="http://michael.chanceyjr.com/site/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fmichael.chanceyjr.com%2Fuseful-code%2Ftcp-message-framework%2F&amp;title=TCP%20Message%20Framework&amp;bodytext=%0D%0ATCP%20Message%20Framework%20is%20a%20simple%20framework%20built%20to%20make%20transport%20of%20TCP%20messages%20via%20C%23%20a%20little%20easier.%20%20I%20have%20devised%20a%20method%20of%20sending%20messages%20and%20unpacking%20them%20on%20the%20other%20side%20that%20requires%20no%20additional%20coding%20to%20handle%20any%20new%20messa" title="Digg"><img src="http://michael.chanceyjr.com/site/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fmichael.chanceyjr.com%2Fuseful-code%2Ftcp-message-framework%2F&amp;title=TCP%20Message%20Framework" title="StumbleUpon"><img src="http://michael.chanceyjr.com/site/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fmichael.chanceyjr.com%2Fuseful-code%2Ftcp-message-framework%2F&amp;title=TCP%20Message%20Framework&amp;notes=%0D%0ATCP%20Message%20Framework%20is%20a%20simple%20framework%20built%20to%20make%20transport%20of%20TCP%20messages%20via%20C%23%20a%20little%20easier.%20%20I%20have%20devised%20a%20method%20of%20sending%20messages%20and%20unpacking%20them%20on%20the%20other%20side%20that%20requires%20no%20additional%20coding%20to%20handle%20any%20new%20messa" title="del.icio.us"><img src="http://michael.chanceyjr.com/site/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://michael.chanceyjr.com/useful-code/tcp-message-framework/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Exporting Datasets and Datatables to CSV Extension</title>
		<link>http://michael.chanceyjr.com/useful-code/exporting-datasets-and-datatables-to-csv-extension/</link>
		<comments>http://michael.chanceyjr.com/useful-code/exporting-datasets-and-datatables-to-csv-extension/#comments</comments>
		<pubDate>Tue, 24 Aug 2010 22:30:12 +0000</pubDate>
		<dc:creator>Michael E. Chancey Jr.</dc:creator>
				<category><![CDATA[Useful Code]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[Array]]></category>
		<category><![CDATA[Comma Separated Values]]></category>
		<category><![CDATA[CSV]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[Dataset]]></category>
		<category><![CDATA[Datatable]]></category>
		<category><![CDATA[Extension]]></category>
		<category><![CDATA[VB]]></category>
		<category><![CDATA[VB.NET]]></category>
		<category><![CDATA[Visual Basic]]></category>

		<guid isPermaLink="false">http://michael.chanceyjr.com/?p=657</guid>
		<description><![CDATA[This is a simple VB.NET Extension for converting Datasets and Datatables into CSV formatted files. Simply call .ToCSV() and you will be returned a CSV formatted string or an array of CSV formatted strings. There is also an option to display null values as NULL or simply leave them as a blank space. //Code Imports [...]]]></description>
			<content:encoded><![CDATA[<p>This is a simple VB.NET Extension for converting Datasets and Datatables into CSV formatted files.  Simply call .ToCSV() and you will be returned a CSV formatted string or an array of CSV formatted strings.  There is also an option to display null values as NULL or simply leave them as a blank space.</p>
<h3>//Code</h3>
<hr />
<pre class="brush: vb;">
Imports System.Runtime.CompilerServices
Imports System.Text
Imports System.Data

''' &lt;summary&gt;
''' EXTENDS DATASETS AND DATATABLES TO GIVE THEM THE ABILITY TO EXPORT TO CSV FORMATTED FILES
''' &lt;/summary&gt;
Module DataExtensions

    ''' &lt;summary&gt;
    ''' EXPORTS A DATATABLE INTO A CSV FORMATTED FILE
    ''' &lt;/summary&gt;
    ''' &lt;param name=&quot;tmpTable&quot;&gt;INPUT DATATABLE TO CONVERT TO CSV&lt;/param&gt;
    ''' &lt;param name=&quot;showNull&quot;&gt;DISPLAY NULL IN EVENT OF NULL OR BLANK LINE&lt;/param&gt;
    ''' &lt;returns&gt;RETURNS A CSV FORMATTED STRING WHICH CAN BE WRITTEN TO A FILE&lt;/returns&gt;
    &lt;Extension()&gt; _
    Public Function ToCSV(ByVal tmpTable As DataTable, ByVal showNull As Boolean) As String
        Dim tmpResult As New StringBuilder()

        'INSERT THE COLUMN HEADERS INTO THE RETURN
        For Each tmpCcol As DataColumn In tmpTable.Columns
            tmpResult.Append(String.Format(&quot;&quot;&quot;{0}&quot;&quot;,&quot;, tmpCcol.ColumnName))
        Next
        tmpResult.AppendLine()

        'INSERT EACH ROWS LINE INTO THE RETURN
        For Each tmpRow As DataRow In tmpTable.Rows
            Dim tmpLine As New StringBuilder()
            For Each tmpCcol As DataColumn In tmpTable.Columns
                If (Not IsDBNull(tmpRow(tmpCcol.ColumnName))) Then
                    tmpLine.Append(String.Format(&quot;&quot;&quot;{0}&quot;&quot;,&quot;, tmpRow(tmpCcol.ColumnName)))
                Else
                    'IF THE USER WANTS TO SEE NULL THEN DISPLAY IT, OTHERWISE JUST A BLANK SPOT
                    If showNull Then
                        tmpLine.Append(&quot;&quot;&quot;NULL&quot;&quot;,&quot;)
                    Else
                        tmpLine.Append(&quot;,&quot;)
                    End If
                End If
            Next

            'APPEND THE ROW TO THE OVERALL RESULT TABLE
            tmpResult.AppendLine(tmpLine.ToString().Substring(0, tmpLine.Length - 1))
        Next

        'RETURN THE TABLE STRING
        Return tmpResult.ToString()
    End Function

    ''' &lt;summary&gt;
    ''' EXPORTS A DATASET INTO AN ARRAY OF CSV FORMATTED FILES
    ''' &lt;/summary&gt;
    ''' &lt;param name=&quot;tmpData&quot;&gt;INPUT DATASET TO BE CONVERTED INTO CSV FILES&lt;/param&gt;
    ''' &lt;param name=&quot;showNull&quot;&gt;DISPLAY NULL IN EVENT OF NULL OR BLANK LINE&lt;/param&gt;
    ''' &lt;returns&gt;RETURNS A CSV FORMATTED STRING ARRAY WHICH CAN BE WRITTEN TO A SERIES OF FILES&lt;/returns&gt;
    &lt;Extension()&gt; _
    Public Function ToCSV(ByVal tmpData As DataSet, ByVal showNull As Boolean) As String()
        Dim result(tmpData.Tables.Count - 1) As String

        For I As Integer = 0 To tmpData.Tables.Count - 1
            'STORE THE RETURN OF EACH TABLE INTO THE ARRAY
            result(I) = tmpData.Tables(I).ToCSV(showNull)
        Next

        'RETURN THE FULL RESULT
        Return result
    End Function

End Module
</pre>



Share


	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=Exporting%20Datasets%20and%20Datatables%20to%20CSV%20Extension%20-%20http%3A%2F%2Fmichael.chanceyjr.com%2Fuseful-code%2Fexporting-datasets-and-datatables-to-csv-extension%2F" title="Twitter"><img src="http://michael.chanceyjr.com/site/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fmichael.chanceyjr.com%2Fuseful-code%2Fexporting-datasets-and-datatables-to-csv-extension%2F&amp;title=Exporting%20Datasets%20and%20Datatables%20to%20CSV%20Extension&amp;bodytext=This%20is%20a%20simple%20VB.NET%20Extension%20for%20converting%20Datasets%20and%20Datatables%20into%20CSV%20formatted%20files.%20%20Simply%20call%20.ToCSV%28%29%20and%20you%20will%20be%20returned%20a%20CSV%20formatted%20string%20or%20an%20array%20of%20CSV%20formatted%20strings.%20%20There%20is%20also%20an%20option%20to%20display%20null%20va" title="Digg"><img src="http://michael.chanceyjr.com/site/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fmichael.chanceyjr.com%2Fuseful-code%2Fexporting-datasets-and-datatables-to-csv-extension%2F&amp;title=Exporting%20Datasets%20and%20Datatables%20to%20CSV%20Extension" title="StumbleUpon"><img src="http://michael.chanceyjr.com/site/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fmichael.chanceyjr.com%2Fuseful-code%2Fexporting-datasets-and-datatables-to-csv-extension%2F&amp;title=Exporting%20Datasets%20and%20Datatables%20to%20CSV%20Extension&amp;notes=This%20is%20a%20simple%20VB.NET%20Extension%20for%20converting%20Datasets%20and%20Datatables%20into%20CSV%20formatted%20files.%20%20Simply%20call%20.ToCSV%28%29%20and%20you%20will%20be%20returned%20a%20CSV%20formatted%20string%20or%20an%20array%20of%20CSV%20formatted%20strings.%20%20There%20is%20also%20an%20option%20to%20display%20null%20va" title="del.icio.us"><img src="http://michael.chanceyjr.com/site/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://michael.chanceyjr.com/useful-code/exporting-datasets-and-datatables-to-csv-extension/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>List Of Objects To XMLNodes</title>
		<link>http://michael.chanceyjr.com/useful-code/list-of-objects-to-xmlnodes/</link>
		<comments>http://michael.chanceyjr.com/useful-code/list-of-objects-to-xmlnodes/#comments</comments>
		<pubDate>Fri, 18 Jun 2010 15:11:31 +0000</pubDate>
		<dc:creator>Michael E. Chancey Jr.</dc:creator>
				<category><![CDATA[Useful Code]]></category>
		<category><![CDATA[Array]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[C-Sharp]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Collections]]></category>
		<category><![CDATA[CSharp]]></category>
		<category><![CDATA[Extension]]></category>
		<category><![CDATA[List]]></category>
		<category><![CDATA[Serialize]]></category>

		<guid isPermaLink="false">http://michael.chanceyjr.com/?p=627</guid>
		<description><![CDATA[This is an extension to create an XML representation of an array of classes or structures. Currently it only supports basic types which are not nested. This could be adapted to accomodate nested classes with fairly minimal changes. //Code /// &#60;summary&#62; /// RETURNS AN XML NODE WHICH CONTAINS ALL THE PROPERTIES FOR A LIST OF [...]]]></description>
			<content:encoded><![CDATA[<p>This is an extension to create an XML representation of an array of classes or structures.  Currently it only supports basic types which are not nested.  This could be adapted to accomodate nested classes with fairly minimal changes.</p>
<h3>//Code</h3>
<hr />
<pre class="brush: csharp;">
/// &lt;summary&gt;
/// RETURNS AN XML NODE WHICH CONTAINS ALL THE PROPERTIES FOR A LIST OF BASIC TYPES
/// &lt;/summary&gt;
/// &lt;typeparam name=&quot;t&quot;&gt;PARAMETER TYPE WITHIN THE LIST&lt;/typeparam&gt;
/// &lt;param name=&quot;obj&quot;&gt;INCOMING LIST TO ITERATE THROUGH&lt;/param&gt;
/// &lt;param name=&quot;ElementName&quot;&gt;ROOT ELEMENT NAME TO CREATE&lt;/param&gt;
/// &lt;returns&gt;AN XML NODE WHICH CONTAINS ALL THE PROPERTIES FOR A LIST OF BASIC TYPES&lt;/returns&gt;
public static XElement CreateXMLNode&lt;t&gt;(this IEnumerable&lt;t&gt; obj, string ElementName)
{
    //NODE WHICH WILL BE RETURNED TO THE CALLING FUNCTION
    XElement tmpReturn = new XElement(ElementName);

    //LOOP THROUGH ALL THE INTERNAL OBJECTS TO ADD NODES TO THE ROOT
    foreach (object tmpObj in obj)
    {
        //TEMP NODE REPRESENTING THE PROPERTY ELEMENT
        XElement tmpNode = new XElement(tmpObj.GetType().Name.ToString());

        //LOOP THROUGH ALL THE FIELDS WHICH ARE PUBLIC
        foreach (FieldInfo tmpField in tmpObj.GetType().GetFields())
        {
            XElement tmpElement = new XElement(tmpField.Name);

            //IF THE FIELD IS PUBLIC THEN ADD THE FIELD TO THE NODE
            if (tmpField.IsPublic)
            {
                tmpElement.Value = tmpField.GetValue(tmpObj).ToString();
                tmpNode.Add(tmpElement);
            }
        }

        //LOOP THROUGH ALL THE PROPERTIES WHICH ARE PUBLIC
        foreach (PropertyInfo tmpProp in tmpObj.GetType().GetProperties())
        {
            XElement tmpElement = new XElement(tmpProp.Name);

            //ADD THE ELEMENT TO THE NODE
            tmpElement.Value = tmpProp.GetValue(tmpObj, null).ToString();
            tmpNode.Add(tmpElement);
        }

        //RETURN THE ROOT NODE TO THE CALLING FUNCTION
        tmpReturn.Add(tmpNode);
    }

    return tmpReturn;
}
</pre>
<h3>//Usage</h3>
<hr />
<pre class="brush: csharp;">
class Program
{
    static void Main(string[] args)
    {
        //CREATE A LIST OF CLASSES
        List&lt;MyClass&gt; tmpList1 = new List&lt;MyClass&gt;();
        tmpList1.Add(new MyClass() { EmployeeName = &quot;Emp 1&quot;, Address = &quot;Add 1&quot;, Salary = 100000 });
        tmpList1.Add(new MyClass() { EmployeeName = &quot;Emp 2&quot;, Address = &quot;Add 2&quot;, Salary = 50000 });
        tmpList1.Add(new MyClass() { EmployeeName = &quot;Emp 3&quot;, Address = &quot;Add 3&quot;, Salary = 65000 });
        tmpList1.Add(new MyClass() { EmployeeName = &quot;Emp 4&quot;, Address = &quot;Add 4&quot;, Salary = 80000 });

        //CREATE A LIST OF STRUCTS
        List&lt;MyStruct&gt; tmpList2 = new List&lt;MyStruct&gt;();
        tmpList2.Add(new MyStruct() { EmployeeName = &quot;Emp 1&quot;, Address = &quot;Add 1&quot;, Salary = 100000 });
        tmpList2.Add(new MyStruct() { EmployeeName = &quot;Emp 2&quot;, Address = &quot;Add 2&quot;, Salary = 50000 });
        tmpList2.Add(new MyStruct() { EmployeeName = &quot;Emp 3&quot;, Address = &quot;Add 3&quot;, Salary = 65000 });
        tmpList2.Add(new MyStruct() { EmployeeName = &quot;Emp 4&quot;, Address = &quot;Add 4&quot;, Salary = 80000 });

        //CREATE XML NODE CONTAINING THE LIST OF OBJECTS CREATED ABOVE
        XElement root1 = tmpList1.CreateXMLNode(&quot;MyList_Of_Classes&quot;);
        XElement root2 = tmpList2.CreateXMLNode(&quot;MyList_Of_Structs&quot;);
    }
}

//BASIC CLASS CONTAINING PUBLIC PROPERTIES
class MyClass
{
    public string EmployeeName { get; set; }
    public string Address { get; set; }
    public double Salary { get; set; }
}

//BASIC STRUCTURE CONTAINING PUBLIC FIELDS
struct MyStruct
{
    public string EmployeeName;
    public string Address;
    public double Salary;
}
</pre>
<h3>//Output</h3>
<hr />
<pre class="brush: xml;">
&lt;MyList_Of_Classes&gt;
  &lt;MyClass&gt;
    &lt;EmployeeName&gt;Emp 1&lt;/EmployeeName&gt;
    &lt;Address&gt;Add 1&lt;/Address&gt;
    &lt;Salary&gt;100000&lt;/Salary&gt;
  &lt;/MyClass&gt;
  &lt;MyClass&gt;
    &lt;EmployeeName&gt;Emp 2&lt;/EmployeeName&gt;
    &lt;Address&gt;Add 2&lt;/Address&gt;
    &lt;Salary&gt;50000&lt;/Salary&gt;
  &lt;/MyClass&gt;
  &lt;MyClass&gt;
    &lt;EmployeeName&gt;Emp 3&lt;/EmployeeName&gt;
    &lt;Address&gt;Add 3&lt;/Address&gt;
    &lt;Salary&gt;65000&lt;/Salary&gt;
  &lt;/MyClass&gt;
  &lt;MyClass&gt;
    &lt;EmployeeName&gt;Emp 4&lt;/EmployeeName&gt;
    &lt;Address&gt;Add 4&lt;/Address&gt;
    &lt;Salary&gt;80000&lt;/Salary&gt;
  &lt;/MyClass&gt;
&lt;/MyList_Of_Classes&gt;

&lt;MyList_Of_Structs&gt;
  &lt;MyStruct&gt;
    &lt;EmployeeName&gt;Emp 1&lt;/EmployeeName&gt;
    &lt;Address&gt;Add 1&lt;/Address&gt;
    &lt;Salary&gt;100000&lt;/Salary&gt;
  &lt;/MyStruct&gt;
  &lt;MyStruct&gt;
    &lt;EmployeeName&gt;Emp 2&lt;/EmployeeName&gt;
    &lt;Address&gt;Add 2&lt;/Address&gt;
    &lt;Salary&gt;50000&lt;/Salary&gt;
  &lt;/MyStruct&gt;
  &lt;MyStruct&gt;
    &lt;EmployeeName&gt;Emp 3&lt;/EmployeeName&gt;
    &lt;Address&gt;Add 3&lt;/Address&gt;
    &lt;Salary&gt;65000&lt;/Salary&gt;
  &lt;/MyStruct&gt;
  &lt;MyStruct&gt;
    &lt;EmployeeName&gt;Emp 4&lt;/EmployeeName&gt;
    &lt;Address&gt;Add 4&lt;/Address&gt;
    &lt;Salary&gt;80000&lt;/Salary&gt;
  &lt;/MyStruct&gt;
&lt;/MyList_Of_Structs&gt;
</pre>



Share


	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=List%20Of%20Objects%20To%20XMLNodes%20-%20http%3A%2F%2Fmichael.chanceyjr.com%2Fuseful-code%2Flist-of-objects-to-xmlnodes%2F" title="Twitter"><img src="http://michael.chanceyjr.com/site/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fmichael.chanceyjr.com%2Fuseful-code%2Flist-of-objects-to-xmlnodes%2F&amp;title=List%20Of%20Objects%20To%20XMLNodes&amp;bodytext=This%20is%20an%20extension%20to%20create%20an%20XML%20representation%20of%20an%20array%20of%20classes%20or%20structures.%20%20Currently%20it%20only%20supports%20basic%20types%20which%20are%20not%20nested.%20%20This%20could%20be%20adapted%20to%20accomodate%20nested%20classes%20with%20fairly%20minimal%20changes.%0D%0A%0D%0A%2F%2FCode%0D%0A%0D%0A%5Bcs" title="Digg"><img src="http://michael.chanceyjr.com/site/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fmichael.chanceyjr.com%2Fuseful-code%2Flist-of-objects-to-xmlnodes%2F&amp;title=List%20Of%20Objects%20To%20XMLNodes" title="StumbleUpon"><img src="http://michael.chanceyjr.com/site/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fmichael.chanceyjr.com%2Fuseful-code%2Flist-of-objects-to-xmlnodes%2F&amp;title=List%20Of%20Objects%20To%20XMLNodes&amp;notes=This%20is%20an%20extension%20to%20create%20an%20XML%20representation%20of%20an%20array%20of%20classes%20or%20structures.%20%20Currently%20it%20only%20supports%20basic%20types%20which%20are%20not%20nested.%20%20This%20could%20be%20adapted%20to%20accomodate%20nested%20classes%20with%20fairly%20minimal%20changes.%0D%0A%0D%0A%2F%2FCode%0D%0A%0D%0A%5Bcs" title="del.icio.us"><img src="http://michael.chanceyjr.com/site/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://michael.chanceyjr.com/useful-code/list-of-objects-to-xmlnodes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>String Truncating Extension</title>
		<link>http://michael.chanceyjr.com/useful-code/string-truncating-extension/</link>
		<comments>http://michael.chanceyjr.com/useful-code/string-truncating-extension/#comments</comments>
		<pubDate>Sun, 20 Dec 2009 10:12:00 +0000</pubDate>
		<dc:creator>Michael E. Chancey Jr.</dc:creator>
				<category><![CDATA[Useful Code]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[C-Sharp]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[CSharp]]></category>
		<category><![CDATA[Extension]]></category>
		<category><![CDATA[String]]></category>
		<category><![CDATA[Truncate]]></category>

		<guid isPermaLink="false">http://michael.chanceyjr.com/?p=539</guid>
		<description><![CDATA[This is a simple extension to truncate strings on whole words. If it can not find a whole word to truncate on then it will fall back to breaking a word up. You can also pass a string to append to the end of the truncated string. Other then that there is not a whole [...]]]></description>
			<content:encoded><![CDATA[<p>This is a simple extension to truncate strings on whole words.  If it can not find a whole word to truncate on then it will fall back to breaking a word up.  You can also pass a string to append to the end of the truncated string.  Other then that there is not a whole lot to say about this one.</p>
<h3>//Code</h3>
<hr/>
<pre class="brush: csharp;">
        /// &lt;summary&gt;
        /// TRUNCATES A STRING PREFERRING WHOLE WORD OVER NON WHOLE WORD
        /// &lt;/summary&gt;
        /// &lt;param name=&quot;s&quot;&gt;INCOMING STRING TO TRUNCATE&lt;/param&gt;
        /// &lt;param name=&quot;len&quot;&gt;LENGTH IN WHICH TO TRUNCATE TO&lt;/param&gt;
        /// &lt;param name=&quot;postTruncate&quot;&gt;ANYTHING TO ADD TO A TRUNCATED STRING SUCH AS ...&lt;/param&gt;
        /// &lt;returns&gt;TRUNCATED STRING WITH POST TRUNCATE ADDED TO IT&lt;/returns&gt;
        public static string Truncate(this string s, int len, string postTruncate)
        {
            //IF THE STRING IS SMALLER THEN THE LENGTH JUST RETURN THE STRING
            if (s == null || s.Length &lt; len)
                return s;
            else
            {
                //INCASE NULL HAS BEEN PASSED IN CHANGE IT TO EMPTY STRING SO IT HAS A COUNT
                if (postTruncate == null)
                    postTruncate = string.Empty;

                //RETURN THE TRUNCATED STRING BACK TO CALLING FUNCTION
                string tmpReturn = string.Concat(Regex.Match(String.Concat(s, &quot; &quot;), string.Format(&quot;^(?&lt;tmpMatch&gt;.{{0,{0}}})\\s&quot;, len)).Groups[&quot;tmpMatch&quot;].Value, postTruncate);

                //IF THE WHOLE WORD TRUNCATE WORKED THEN USE IT OTHERWISE USE NON WHOLE WORD TRUNCATE
                if (tmpReturn != postTruncate)
                    return tmpReturn;
                else
                    return string.Concat(Regex.Match(String.Concat(s, &quot; &quot;), string.Format(&quot;^(?&lt;tmpMatch&gt;.{{0,{0}}})&quot;, len)).Groups[&quot;tmpMatch&quot;].Value, postTruncate);
            }
        }
</pre>
<h3>//Usage</h3>
<hr/>
<pre class="brush: csharp;">
    class Program
    {
        static void Main(string[] args)
        {
            //OUTPUT WILL BE &quot;Hello, World...&quot;
            Console.WriteLine(&quot;Hello, World this is some long text to truncate&quot;.Truncate(15, &quot;...&quot;));
            Console.ReadLine();
        }
    }
</pre>



Share


	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=String%20Truncating%20Extension%20-%20http%3A%2F%2Fmichael.chanceyjr.com%2Fuseful-code%2Fstring-truncating-extension%2F" title="Twitter"><img src="http://michael.chanceyjr.com/site/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fmichael.chanceyjr.com%2Fuseful-code%2Fstring-truncating-extension%2F&amp;title=String%20Truncating%20Extension&amp;bodytext=This%20is%20a%20simple%20extension%20to%20truncate%20strings%20on%20whole%20words.%20%20If%20it%20can%20not%20find%20a%20whole%20word%20to%20truncate%20on%20then%20it%20will%20fall%20back%20to%20breaking%20a%20word%20up.%20%20You%20can%20also%20pass%20a%20string%20to%20append%20to%20the%20end%20of%20the%20truncated%20string.%20%20Other%20then%20that%20th" title="Digg"><img src="http://michael.chanceyjr.com/site/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fmichael.chanceyjr.com%2Fuseful-code%2Fstring-truncating-extension%2F&amp;title=String%20Truncating%20Extension" title="StumbleUpon"><img src="http://michael.chanceyjr.com/site/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fmichael.chanceyjr.com%2Fuseful-code%2Fstring-truncating-extension%2F&amp;title=String%20Truncating%20Extension&amp;notes=This%20is%20a%20simple%20extension%20to%20truncate%20strings%20on%20whole%20words.%20%20If%20it%20can%20not%20find%20a%20whole%20word%20to%20truncate%20on%20then%20it%20will%20fall%20back%20to%20breaking%20a%20word%20up.%20%20You%20can%20also%20pass%20a%20string%20to%20append%20to%20the%20end%20of%20the%20truncated%20string.%20%20Other%20then%20that%20th" title="del.icio.us"><img src="http://michael.chanceyjr.com/site/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://michael.chanceyjr.com/useful-code/string-truncating-extension/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Human Readable Size Formatting Extension</title>
		<link>http://michael.chanceyjr.com/useful-code/human-readable-size-formatting-extension/</link>
		<comments>http://michael.chanceyjr.com/useful-code/human-readable-size-formatting-extension/#comments</comments>
		<pubDate>Mon, 14 Dec 2009 09:34:17 +0000</pubDate>
		<dc:creator>Michael E. Chancey Jr.</dc:creator>
				<category><![CDATA[Useful Code]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[C-Sharp]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[CSharp]]></category>
		<category><![CDATA[Extension]]></category>
		<category><![CDATA[Numeric]]></category>

		<guid isPermaLink="false">http://michael.chanceyjr.com/?p=521</guid>
		<description><![CDATA[This is a simple extension to turn unreadable sizes into something that makes more sense to the human eye. This will convert 1024 into 1KB or 1099511627776 into 1GB. This is by no means perfect, some additions could be made such as adding ,&#8217;s to separate the digits into proper grouping. Having said that most [...]]]></description>
			<content:encoded><![CDATA[<p>This is a simple extension to turn unreadable sizes into something that makes more sense to the human eye.  This will convert 1024 into 1KB or 1099511627776 into 1GB.  This is by no means perfect, some additions could be made such as adding ,&#8217;s to separate the digits into proper grouping.  Having said that most of the time grouping will be removed because numbers which should be grouped soon fall into the next sizing segment, meaning 1,000B becomes 1KB after only 24 more bytes.</p>
<h3>//Code</h3>
<hr/>
<pre class="brush: csharp;">
        /// &lt;summary&gt;
        /// MAIN TO HUMAN READABLE FUNCTION TO CONVERT DOUBLES INTO XB, XKB, XMB, XGB
        /// &lt;/summary&gt;
        /// &lt;param name=&quot;x&quot;&gt;INCOMING NUMBER TO MAKE READABLE&lt;/param&gt;
        /// &lt;returns&gt;HUMAN READABLE SIZE FORMAT SUCH AS 1MB&lt;/returns&gt;
        public static string ToHumanReadable(this double x)
        {
            //CONSTANTS FOR SIZING
            double KB = 1024;
            double MB = 1024 * KB;
            double GB = 1024 * MB;

            if (x &lt; KB)
                return string.Format(&quot;{0}B&quot;, x);
            else if (x &lt; MB)
            {
                return string.Format(&quot;{0:0.##}KB&quot;, x / KB);
            }
            else if (x &lt; GB)
            {
                return string.Format(&quot;{0:0.##}MB&quot;, x / MB);
            }
            else if (x &gt;= GB)
            {
                return string.Format(&quot;{0:0.##}GB&quot;, x / GB);
            }
            else
            {
                //HACK: GET RID OF COMPILER ERROR BECAUSE IT BELEIVES NOT ALL PATHS RETURN A VALUE
                return null;
            }
        }

        /// &lt;summary&gt;
        /// EXTENSION FOR LONG TO MAKE HUMAN READABLE
        /// &lt;/summary&gt;
        /// &lt;param name=&quot;x&quot;&gt;INCOMING NUMBER TO MAKE READABLE&lt;/param&gt;
        /// &lt;returns&gt;HUMAN READABLE SIZE FORMAT SUCH AS 1MB&lt;/returns&gt;
        public static string ToHumanReadable(this long x)
        {
            return ToHumanReadable((double)x);
        }

        /// &lt;summary&gt;
        /// EXTENSION FOR INT TO MAKE HUMAN READABLE
        /// &lt;/summary&gt;
        /// &lt;param name=&quot;x&quot;&gt;INCOMING NUMBER TO MAKE READABLE&lt;/param&gt;
        /// &lt;returns&gt;HUMAN READABLE SIZE FORMAT SUCH AS 1MB&lt;/returns&gt;
        public static string ToHumanReadable(this int x)
        {
            return ToHumanReadable((double)x);
        }

        /// &lt;summary&gt;
        /// EXTENSION FOR SINGLE TO MAKE HUMAN READABLE
        /// &lt;/summary&gt;
        /// &lt;param name=&quot;x&quot;&gt;INCOMING NUMBER TO MAKE READABLE&lt;/param&gt;
        /// &lt;returns&gt;HUMAN READABLE SIZE FORMAT SUCH AS 1MB&lt;/returns&gt;
        public static string ToHumanReadable(this Single x)
        {
            return ToHumanReadable((double)x);
        }
</pre>



Share


	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=Human%20Readable%20Size%20Formatting%20Extension%20-%20http%3A%2F%2Fmichael.chanceyjr.com%2Fuseful-code%2Fhuman-readable-size-formatting-extension%2F" title="Twitter"><img src="http://michael.chanceyjr.com/site/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fmichael.chanceyjr.com%2Fuseful-code%2Fhuman-readable-size-formatting-extension%2F&amp;title=Human%20Readable%20Size%20Formatting%20Extension&amp;bodytext=This%20is%20a%20simple%20extension%20to%20turn%20unreadable%20sizes%20into%20something%20that%20makes%20more%20sense%20to%20the%20human%20eye.%20%20This%20will%20convert%201024%20into%201KB%20or%201099511627776%20into%201GB.%20%20This%20is%20by%20no%20means%20perfect%2C%20some%20additions%20could%20be%20made%20such%20as%20adding%20%2C%27s%20to%20se" title="Digg"><img src="http://michael.chanceyjr.com/site/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fmichael.chanceyjr.com%2Fuseful-code%2Fhuman-readable-size-formatting-extension%2F&amp;title=Human%20Readable%20Size%20Formatting%20Extension" title="StumbleUpon"><img src="http://michael.chanceyjr.com/site/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fmichael.chanceyjr.com%2Fuseful-code%2Fhuman-readable-size-formatting-extension%2F&amp;title=Human%20Readable%20Size%20Formatting%20Extension&amp;notes=This%20is%20a%20simple%20extension%20to%20turn%20unreadable%20sizes%20into%20something%20that%20makes%20more%20sense%20to%20the%20human%20eye.%20%20This%20will%20convert%201024%20into%201KB%20or%201099511627776%20into%201GB.%20%20This%20is%20by%20no%20means%20perfect%2C%20some%20additions%20could%20be%20made%20such%20as%20adding%20%2C%27s%20to%20se" title="del.icio.us"><img src="http://michael.chanceyjr.com/site/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://michael.chanceyjr.com/useful-code/human-readable-size-formatting-extension/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>String Encryption and Decryption Extension</title>
		<link>http://michael.chanceyjr.com/useful-code/string-encryption-and-decryption-extension/</link>
		<comments>http://michael.chanceyjr.com/useful-code/string-encryption-and-decryption-extension/#comments</comments>
		<pubDate>Thu, 10 Dec 2009 05:26:53 +0000</pubDate>
		<dc:creator>Michael E. Chancey Jr.</dc:creator>
				<category><![CDATA[Useful Code]]></category>
		<category><![CDATA[AES Encryption]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[C-Sharp]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[CSharp]]></category>
		<category><![CDATA[Decryption]]></category>
		<category><![CDATA[Encryption]]></category>
		<category><![CDATA[Extension]]></category>

		<guid isPermaLink="false">http://michael.chanceyjr.com/?p=458</guid>
		<description><![CDATA[This extension is a little longer then usual and it also has a few supporting extensions which are required to make it run; I have included all of which in this post. I wrote a few extras to just make some of the code a little bit shorter and neater. The first is Reverse which [...]]]></description>
			<content:encoded><![CDATA[<p>This extension is a little longer then usual and it also has a few supporting extensions which are required to make it run; I have included all of which in this post.  I wrote a few extras to just make some of the code a little bit shorter and neater.  The first is Reverse which like the name implies reverses an incoming string.  The second is ToByteArray which converts a string to a Byte Array.  The third is ConvertToString which does the exact opposite of ToByteArray by converting a Byte Array back into a string.</p>
<h3>//Code</h3>
<hr/>
<pre class="brush: csharp;">
        /// &lt;summary&gt;
        /// ENCRYPTS A STRING USING AES ENCRYPTION AND A PASSWORD
        /// &lt;/summary&gt;
        /// &lt;param name=&quot;s&quot;&gt;INCOMING STRING TO ENCRYPT&lt;/param&gt;
        /// &lt;param name=&quot;password&quot;&gt;PASSWORD TO USE FOR ENCRYPTION&lt;/param&gt;
        /// &lt;returns&gt;BASE64 ENCODED ENCRYPTED STRING&lt;/returns&gt;
        public static string EncryptString(this string s, string password)
        {
            //CREATE AN AES CRYPTOGRAPHY CLASS
            using (Aes tmpAes = AesCryptoServiceProvider.Create())
            {
                //CREATE A PASSWORD DERIVED BYTES CLASS TO CONVERT A SIMPLE PASSWORD INTO SOMETHING MORE COMPLEX
                PasswordDeriveBytes tmpPasswordBytes = new PasswordDeriveBytes(password.ToByteArray(), password.Reverse().ToByteArray());

                //CREATE A ICRYPTO TRANSFORM PROVIDER USING 256 BITS FOR THE KEY WHICH IS DERIVED FROM THE PASSWORD PASSED IN
                using (ICryptoTransform tmpCrypto = tmpAes.CreateEncryptor(tmpPasswordBytes.GetBytes(256 / 8), tmpPasswordBytes.GetBytes(16)))
                {
                    //CREATE A TEMPORARY MEMORY STREAM TO HOLD THE DATA WHICH IS BEING ENCRYPTED
                    using (MemoryStream tmpMemoryStream = new MemoryStream())
                    {
                        //CREATE THE CRYPTO STREAM WHICH WILL WRITE TO THE UNDERLYING MEMORY STREAM
                        using (CryptoStream tmpStream = new CryptoStream(tmpMemoryStream, tmpCrypto, CryptoStreamMode.Write))
                        {
                            tmpStream.Write(s.ToByteArray(), 0, s.Length);
                            tmpStream.Flush();
                        }

                        //CONVERT THE DATA TO A BASE64 STRING SO WE HAVE ALL VALID CHARACTERS IN THE STRING
                        return Convert.ToBase64String(tmpMemoryStream.ToArray());
                    }
                }
            }
        }

        /// &lt;summary&gt;
        /// DECRYPTS A BASE64 ENCODED STRING USING AES AND PASSWORD
        /// &lt;/summary&gt;
        /// &lt;param name=&quot;s&quot;&gt;INCOMING BASE64 ENCODED STRING TO DECRYPT&lt;/param&gt;
        /// &lt;param name=&quot;password&quot;&gt;PASSWORD USED DURING THE ENCRYPTION PROCESS TO REVERSE THE SEQUENCE&lt;/param&gt;
        /// &lt;returns&gt;ORIGINAL STRING PRIOR TO ENCRYPTION&lt;/returns&gt;
        public static string DecryptString(this string s, string password)
        {
            //CREATE AN AES CRYPTOGRAPHY CLASS
            using (Aes tmpAes = AesCryptoServiceProvider.Create())
            {
                //CREATE A PASSWORD DERIVED BYTES CLASS TO CONVERT A SIMPLE PASSWORD INTO SOMETHING MORE COMPLEX
                PasswordDeriveBytes tmpPasswordBytes = new PasswordDeriveBytes(password.ToByteArray(), password.Reverse().ToByteArray());

                //CREATE A ICRYPTO TRANSFORM PROVIDER USING 256 BITS FOR THE KEY WHICH IS DERIVED FROM THE PASSWORD PASSED IN
                using (ICryptoTransform tmpCrypto = tmpAes.CreateDecryptor(tmpPasswordBytes.GetBytes(256 / 8), tmpPasswordBytes.GetBytes(16)))
                {
                    //CREATE A MEMORY STREAM FROM THE BASE64 STRING WHICH IS BEING PASSED IN
                    using (MemoryStream tmpMemoryStream = new MemoryStream(Convert.FromBase64String(s)))
                    {
                        //CREATE A NEW STREAM WHICH WILL DECRYPT THE DATA AS WE READ IT
                        using (CryptoStream tmpStream = new CryptoStream(tmpMemoryStream, tmpCrypto, CryptoStreamMode.Read))
                        {
                            int readCount;
                            byte[] tmpBuffer = new byte[1024];
                            StringBuilder tmpReturn = new StringBuilder();

                            //CATCH THE ERROR INCASE THE PASSWORD IS INVALID
                            try
                            {
                                //AS LONG AS THEIR IS DATA ON THE STREAM KEEP READING
                                while ((readCount = tmpStream.Read(tmpBuffer, 0, tmpBuffer.Length)) != 0)
                                {
                                    tmpReturn.Append(tmpBuffer.Take(readCount).ToArray().ConvertToString());
                                }

                                //RETURN THE DECRYPTED STRING VALUE
                                return tmpReturn.ToString();
                            }
                            catch (CryptographicException ex)
                            {
                                return &quot;&quot;;
                            }
                        }
                    }
                }
            }
        }

        #region &quot;Supporting Extensions&quot;
        /// &lt;summary&gt;
        /// CONVERT AN ARRAY OF BYTES INTO THE UTF8 STRING
        /// &lt;/summary&gt;
        /// &lt;param name=&quot;b&quot;&gt;ARRAY OF BYTES COMING IN&lt;/param&gt;
        /// &lt;returns&gt;STRING REPRESENTATION OF THE BYTES PASSED IN&lt;/returns&gt;
        public static string ConvertToString(this byte[] b)
        {
            return System.Text.ASCIIEncoding.UTF8.GetString(b);
        }

        /// &lt;summary&gt;
        /// REVERSES A STRING
        /// &lt;/summary&gt;
        /// &lt;param name=&quot;s&quot;&gt;INCOMING STRING TO REVERSE&lt;/param&gt;
        /// &lt;returns&gt;REVERSED STRING&lt;/returns&gt;
        public static string Reverse(this string s)
        {
            StringBuilder tmpReturn = new StringBuilder();

            //LOOP THROUGH EACH CHARACTER FROM BACK TO FRONT AND INSERT IT INTO THE BUILDER
            for (int i = s.Length - 1; i &gt;= 0; i--)
                tmpReturn.Append(s[i]);

            //RETURN THE REVERSED STRING TO THE CALLING FUNCTION
            return tmpReturn.ToString();
        }

        /// &lt;summary&gt;
        /// CONVERTS A STRING INTO UTF8 ENCODED BYTE ARRAY
        /// &lt;/summary&gt;
        /// &lt;param name=&quot;s&quot;&gt;INCOMING STRING TO CONVERT&lt;/param&gt;
        /// &lt;returns&gt;BYTE ARRAY OF THE INCOMING STRING&lt;/returns&gt;
        public static byte[] ToByteArray(this string s)
        {
            //CONVERT THE STRING TO A BYTE ARRAY
            return System.Text.ASCIIEncoding.UTF8.GetBytes(s);
        }
        #endregion
</pre>
<h3>//Usage</h3>
<hr/>
<pre class="brush: csharp;">
    class Program
    {
        static void Main(string[] args)
        {
            string tmpEnc = &quot;Hello, World!&quot;.EncryptString(&quot;password&quot;);
            string tmpDec = tmpEnc.DecryptString(&quot;password&quot;);

            Console.WriteLine(&quot;{0}\n{1}&quot;, tmpEnc, tmpDec);
            Console.ReadLine();
        }
    }
</pre>



Share


	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=String%20Encryption%20and%20Decryption%20Extension%20-%20http%3A%2F%2Fmichael.chanceyjr.com%2Fuseful-code%2Fstring-encryption-and-decryption-extension%2F" title="Twitter"><img src="http://michael.chanceyjr.com/site/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fmichael.chanceyjr.com%2Fuseful-code%2Fstring-encryption-and-decryption-extension%2F&amp;title=String%20Encryption%20and%20Decryption%20Extension&amp;bodytext=This%20extension%20is%20a%20little%20longer%20then%20usual%20and%20it%20also%20has%20a%20few%20supporting%20extensions%20which%20are%20required%20to%20make%20it%20run%3B%20I%20have%20included%20all%20of%20which%20in%20this%20post.%20%20I%20wrote%20a%20few%20extras%20to%20just%20make%20some%20of%20the%20code%20a%20little%20bit%20shorter%20and%20neater" title="Digg"><img src="http://michael.chanceyjr.com/site/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fmichael.chanceyjr.com%2Fuseful-code%2Fstring-encryption-and-decryption-extension%2F&amp;title=String%20Encryption%20and%20Decryption%20Extension" title="StumbleUpon"><img src="http://michael.chanceyjr.com/site/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fmichael.chanceyjr.com%2Fuseful-code%2Fstring-encryption-and-decryption-extension%2F&amp;title=String%20Encryption%20and%20Decryption%20Extension&amp;notes=This%20extension%20is%20a%20little%20longer%20then%20usual%20and%20it%20also%20has%20a%20few%20supporting%20extensions%20which%20are%20required%20to%20make%20it%20run%3B%20I%20have%20included%20all%20of%20which%20in%20this%20post.%20%20I%20wrote%20a%20few%20extras%20to%20just%20make%20some%20of%20the%20code%20a%20little%20bit%20shorter%20and%20neater" title="del.icio.us"><img src="http://michael.chanceyjr.com/site/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://michael.chanceyjr.com/useful-code/string-encryption-and-decryption-extension/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fixed Length String Extension</title>
		<link>http://michael.chanceyjr.com/useful-code/fixed-length-string-extension/</link>
		<comments>http://michael.chanceyjr.com/useful-code/fixed-length-string-extension/#comments</comments>
		<pubDate>Wed, 09 Dec 2009 08:02:20 +0000</pubDate>
		<dc:creator>Michael E. Chancey Jr.</dc:creator>
				<category><![CDATA[Useful Code]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[C-Sharp]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[CSharp]]></category>
		<category><![CDATA[Extension]]></category>

		<guid isPermaLink="false">http://michael.chanceyjr.com/?p=454</guid>
		<description><![CDATA[This little snippet is great for exporting a field to a fixed length file. It will pad a string to X length using spaces and will extend any string object. //Code /// &#60;summary&#62; /// CREATE A FIXED LENGTH STRING FOR INSERTING INTO FIXED LENGTH FILES OR GRIDS /// &#60;/summary&#62; /// &#60;param name=&#34;s&#34;&#62;STRING TO BE PADDED&#60;/param&#62; [...]]]></description>
			<content:encoded><![CDATA[<p>This little snippet is great for exporting a field to a fixed length file.  It will pad a string to X length using spaces and will extend any string object.</p>
<h3>//Code</h3>
<hr/>
<pre class="brush: csharp;">
        /// &lt;summary&gt;
        /// CREATE A FIXED LENGTH STRING FOR INSERTING INTO FIXED LENGTH FILES OR GRIDS
        /// &lt;/summary&gt;
        /// &lt;param name=&quot;s&quot;&gt;STRING TO BE PADDED&lt;/param&gt;
        /// &lt;param name=&quot;length&quot;&gt;LENGTH OF FINAL STRING&lt;/param&gt;
        /// &lt;returns&gt;FIXED LENGTH STRING OF X LENGTH&lt;/returns&gt;
        public static string FixedLengthString(this string s, int length)
        {
            //IF THE STRING IS ALREADY LONG ENOUGH THEN JUST RETURN S
            //ELSE ADD SPACES TO THE END TO MAKE THE STRING X LENGTH
            if (s.Length &gt;= length)
                return s;
            else
                return string.Concat(s, new string(' ', length - s.Length));
        }
</pre>



Share


	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=Fixed%20Length%20String%20Extension%20-%20http%3A%2F%2Fmichael.chanceyjr.com%2Fuseful-code%2Ffixed-length-string-extension%2F" title="Twitter"><img src="http://michael.chanceyjr.com/site/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fmichael.chanceyjr.com%2Fuseful-code%2Ffixed-length-string-extension%2F&amp;title=Fixed%20Length%20String%20Extension&amp;bodytext=This%20little%20snippet%20is%20great%20for%20exporting%20a%20field%20to%20a%20fixed%20length%20file.%20%20It%20will%20pad%20a%20string%20to%20X%20length%20using%20spaces%20and%20will%20extend%20any%20string%20object.%0D%0A%0D%0A%2F%2FCode%0D%0A%0D%0A%5Bcsharp%5D%0D%0A%20%20%20%20%20%20%20%20%2F%2F%2F%20%26lt%3Bsummary%26gt%3B%0D%0A%20%20%20%20%20%20%20%20%2F%2F%2F%20CREATE%20A%20FIXED%20LENGTH%20STRING%20" title="Digg"><img src="http://michael.chanceyjr.com/site/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fmichael.chanceyjr.com%2Fuseful-code%2Ffixed-length-string-extension%2F&amp;title=Fixed%20Length%20String%20Extension" title="StumbleUpon"><img src="http://michael.chanceyjr.com/site/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fmichael.chanceyjr.com%2Fuseful-code%2Ffixed-length-string-extension%2F&amp;title=Fixed%20Length%20String%20Extension&amp;notes=This%20little%20snippet%20is%20great%20for%20exporting%20a%20field%20to%20a%20fixed%20length%20file.%20%20It%20will%20pad%20a%20string%20to%20X%20length%20using%20spaces%20and%20will%20extend%20any%20string%20object.%0D%0A%0D%0A%2F%2FCode%0D%0A%0D%0A%5Bcsharp%5D%0D%0A%20%20%20%20%20%20%20%20%2F%2F%2F%20%26lt%3Bsummary%26gt%3B%0D%0A%20%20%20%20%20%20%20%20%2F%2F%2F%20CREATE%20A%20FIXED%20LENGTH%20STRING%20" title="del.icio.us"><img src="http://michael.chanceyjr.com/site/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://michael.chanceyjr.com/useful-code/fixed-length-string-extension/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Compress and UnCompress Stream Extension</title>
		<link>http://michael.chanceyjr.com/useful-code/compress-and-uncompress-stream-extension/</link>
		<comments>http://michael.chanceyjr.com/useful-code/compress-and-uncompress-stream-extension/#comments</comments>
		<pubDate>Sun, 06 Dec 2009 06:53:57 +0000</pubDate>
		<dc:creator>Michael E. Chancey Jr.</dc:creator>
				<category><![CDATA[Useful Code]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[C-Sharp]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[CSharp]]></category>
		<category><![CDATA[Extension]]></category>
		<category><![CDATA[Stream]]></category>

		<guid isPermaLink="false">http://michael.chanceyjr.com/site/?p=395</guid>
		<description><![CDATA[/// &#60;summary&#62; /// READS FROM SOURCE STREAM AND WRITES COMPRESSED VERSION TO THE DEST STREAM /// &#60;/summary&#62; /// &#60;param name=&#34;src&#34;&#62;SOURCE STREAM TO COMPRESS&#60;/param&#62; /// &#60;param name=&#34;dest&#34;&#62;DEST OF COMPRESSED STREAM&#60;/param&#62; public static void Compress(this Stream src, Stream dest) { //CREATE A COMPRESSING GZIP STREAM using(GZipStream tmpCompressor = new GZipStream(dest, CompressionMode.Compress)) { int count; byte[] buffer = [...]]]></description>
			<content:encoded><![CDATA[<pre class="brush: csharp;">
        /// &lt;summary&gt;
        /// READS FROM SOURCE STREAM AND WRITES COMPRESSED VERSION TO THE DEST STREAM
        /// &lt;/summary&gt;
        /// &lt;param name=&quot;src&quot;&gt;SOURCE STREAM TO COMPRESS&lt;/param&gt;
        /// &lt;param name=&quot;dest&quot;&gt;DEST OF COMPRESSED STREAM&lt;/param&gt;
        public static void Compress(this Stream src, Stream dest)
        {
            //CREATE A COMPRESSING GZIP STREAM
            using(GZipStream tmpCompressor = new GZipStream(dest, CompressionMode.Compress))
            {
                int count;
                byte[] buffer = new byte[1024];

                //WHILE WE ARE STILL ABLE TO READ BYTES FROM THE SOURCE WRITE THEM TO THE DEST
                while ((count = src.Read(buffer, 0, buffer.Length)) != 0)
                {
                    tmpCompressor.Write(buffer, 0, count);
                }

                //FLUSH THE STREAM SO ALL DATA IS MOVED INTO THE STREAM
                tmpCompressor.Flush();
            }
        }

        /// &lt;summary&gt;
        /// READS COMPRESSED SOURCE STREAM AND WRITES UNCOMPRESSED VERSION TO THE DEST STREAM
        /// &lt;/summary&gt;
        /// &lt;param name=&quot;src&quot;&gt;SOURCE OF COMPRESSED STREAM&lt;/param&gt;
        /// &lt;param name=&quot;dest&quot;&gt;DEST OF UNCOMPRESSED STREAM&lt;/param&gt;
        public static void Uncompress(this Stream src, Stream dest)
        {
            //CREATE A DECOMPRESSING GZIP STREAM
            using (GZipStream tmpDecompressor = new GZipStream(src, CompressionMode.Decompress))
            {
                int count;
                byte[] buffer = new byte[1024];

                //WHILE WE ARE STILL ABLE TO READ BYTES FROM THE SOURCE WRITE THEM TO THE DEST
                while ((count = tmpDecompressor.Read(buffer, 0, buffer.Length)) != 0)
                {
                    dest.Write(buffer, 0, count);
                }

                //FLUSH THE STREAM SO ALL DATA IS MOVED INTO THE STREAM
                dest.Flush();
            }
        }
</pre>



Share


	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=Compress%20and%20UnCompress%20Stream%20Extension%20-%20http%3A%2F%2Fmichael.chanceyjr.com%2Fuseful-code%2Fcompress-and-uncompress-stream-extension%2F" title="Twitter"><img src="http://michael.chanceyjr.com/site/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fmichael.chanceyjr.com%2Fuseful-code%2Fcompress-and-uncompress-stream-extension%2F&amp;title=Compress%20and%20UnCompress%20Stream%20Extension&amp;bodytext=%5Bcsharp%5D%0D%0A%20%20%20%20%20%20%20%20%2F%2F%2F%20%26lt%3Bsummary%26gt%3B%0D%0A%20%20%20%20%20%20%20%20%2F%2F%2F%20READS%20FROM%20SOURCE%20STREAM%20AND%20WRITES%20COMPRESSED%20VERSION%20TO%20THE%20DEST%20STREAM%0D%0A%20%20%20%20%20%20%20%20%2F%2F%2F%20%26lt%3B%2Fsummary%26gt%3B%0D%0A%20%20%20%20%20%20%20%20%2F%2F%2F%20%26lt%3Bparam%20name%3D%26quot%3Bsrc%26quot%3B%26gt%3BSOURCE%20STREAM%20TO%20COMPRESS%26lt%3B%2Fparam%26gt%3B%0D%0A%20%20%20%20%20%20%20" title="Digg"><img src="http://michael.chanceyjr.com/site/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fmichael.chanceyjr.com%2Fuseful-code%2Fcompress-and-uncompress-stream-extension%2F&amp;title=Compress%20and%20UnCompress%20Stream%20Extension" title="StumbleUpon"><img src="http://michael.chanceyjr.com/site/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fmichael.chanceyjr.com%2Fuseful-code%2Fcompress-and-uncompress-stream-extension%2F&amp;title=Compress%20and%20UnCompress%20Stream%20Extension&amp;notes=%5Bcsharp%5D%0D%0A%20%20%20%20%20%20%20%20%2F%2F%2F%20%26lt%3Bsummary%26gt%3B%0D%0A%20%20%20%20%20%20%20%20%2F%2F%2F%20READS%20FROM%20SOURCE%20STREAM%20AND%20WRITES%20COMPRESSED%20VERSION%20TO%20THE%20DEST%20STREAM%0D%0A%20%20%20%20%20%20%20%20%2F%2F%2F%20%26lt%3B%2Fsummary%26gt%3B%0D%0A%20%20%20%20%20%20%20%20%2F%2F%2F%20%26lt%3Bparam%20name%3D%26quot%3Bsrc%26quot%3B%26gt%3BSOURCE%20STREAM%20TO%20COMPRESS%26lt%3B%2Fparam%26gt%3B%0D%0A%20%20%20%20%20%20%20" title="del.icio.us"><img src="http://michael.chanceyjr.com/site/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://michael.chanceyjr.com/useful-code/compress-and-uncompress-stream-extension/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MD5 Stream Extension</title>
		<link>http://michael.chanceyjr.com/useful-code/md5-stream-extension/</link>
		<comments>http://michael.chanceyjr.com/useful-code/md5-stream-extension/#comments</comments>
		<pubDate>Sun, 06 Dec 2009 06:52:52 +0000</pubDate>
		<dc:creator>Michael E. Chancey Jr.</dc:creator>
				<category><![CDATA[Useful Code]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[C-Sharp]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[CSharp]]></category>
		<category><![CDATA[Extension]]></category>
		<category><![CDATA[Stream]]></category>

		<guid isPermaLink="false">http://michael.chanceyjr.com/site/?p=392</guid>
		<description><![CDATA[/// &#60;summary&#62; /// COMPUTE THE HASH VALUE OF THE FILE STREAM /// &#60;/summary&#62; /// &#60;param name=&#34;s&#34;&#62;STREAM TO COMPUTE THE VALUE OF&#60;/param&#62; /// &#60;param name=&#34;closeStream&#34;&#62;BOOLEAN TO DETERMINE IF THE STREAM SHOULD BE CLOSED UPON EXIT&#60;/param&#62; /// &#60;returns&#62;RETURNS AN MD5 HASH OF THE FILE&#60;/returns&#62; public static string ComputeMD5(this Stream s, bool closeStream) { try { //SEEK TO [...]]]></description>
			<content:encoded><![CDATA[<pre class="brush: csharp;">
        /// &lt;summary&gt;
        /// COMPUTE THE HASH VALUE OF THE FILE STREAM
        /// &lt;/summary&gt;
        /// &lt;param name=&quot;s&quot;&gt;STREAM TO COMPUTE THE VALUE OF&lt;/param&gt;
        /// &lt;param name=&quot;closeStream&quot;&gt;BOOLEAN TO DETERMINE IF THE STREAM SHOULD BE CLOSED UPON EXIT&lt;/param&gt;
        /// &lt;returns&gt;RETURNS AN MD5 HASH OF THE FILE&lt;/returns&gt;
        public static string ComputeMD5(this Stream s, bool closeStream)
        {
            try
            {
                //SEEK TO THE BEGINING OF THE STREAM
                s.Seek(0, SeekOrigin.Begin);

                //CREATE AN MD5 AND COMPUTE THE HASH VALUE
                return BitConverter.ToString(MD5.Create().ComputeHash(s)).Replace(&quot;-&quot;, &quot;&quot;);
            }
            catch
            {
                //THROW AN ERROR BECAUSE WE WERE UNABLE TO SEEK IN THE FILE OR POSSIBLY READ
                throw new ArgumentException(&quot;Invalid stream, must be able to seek and read.&quot;);
            }
            finally
            {
                //IF WE ARE SUPPOSED TO CLOSE THE STREAM WHEN WE ARE DONE THEN DO SO
                if (closeStream)
                    s.Close();
            }

        }
</pre>



Share


	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=MD5%20Stream%20Extension%20-%20http%3A%2F%2Fmichael.chanceyjr.com%2Fuseful-code%2Fmd5-stream-extension%2F" title="Twitter"><img src="http://michael.chanceyjr.com/site/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fmichael.chanceyjr.com%2Fuseful-code%2Fmd5-stream-extension%2F&amp;title=MD5%20Stream%20Extension&amp;bodytext=%5Bcsharp%5D%0D%0A%20%20%20%20%20%20%20%20%2F%2F%2F%20%26lt%3Bsummary%26gt%3B%0D%0A%20%20%20%20%20%20%20%20%2F%2F%2F%20COMPUTE%20THE%20HASH%20VALUE%20OF%20THE%20FILE%20STREAM%0D%0A%20%20%20%20%20%20%20%20%2F%2F%2F%20%26lt%3B%2Fsummary%26gt%3B%0D%0A%20%20%20%20%20%20%20%20%2F%2F%2F%20%26lt%3Bparam%20name%3D%26quot%3Bs%26quot%3B%26gt%3BSTREAM%20TO%20COMPUTE%20THE%20VALUE%20OF%26lt%3B%2Fparam%26gt%3B%0D%0A%20%20%20%20%20%20%20%20%2F%2F%2F%20%26lt%3Bparam%20name%3D%26quot%3Bclo" title="Digg"><img src="http://michael.chanceyjr.com/site/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fmichael.chanceyjr.com%2Fuseful-code%2Fmd5-stream-extension%2F&amp;title=MD5%20Stream%20Extension" title="StumbleUpon"><img src="http://michael.chanceyjr.com/site/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fmichael.chanceyjr.com%2Fuseful-code%2Fmd5-stream-extension%2F&amp;title=MD5%20Stream%20Extension&amp;notes=%5Bcsharp%5D%0D%0A%20%20%20%20%20%20%20%20%2F%2F%2F%20%26lt%3Bsummary%26gt%3B%0D%0A%20%20%20%20%20%20%20%20%2F%2F%2F%20COMPUTE%20THE%20HASH%20VALUE%20OF%20THE%20FILE%20STREAM%0D%0A%20%20%20%20%20%20%20%20%2F%2F%2F%20%26lt%3B%2Fsummary%26gt%3B%0D%0A%20%20%20%20%20%20%20%20%2F%2F%2F%20%26lt%3Bparam%20name%3D%26quot%3Bs%26quot%3B%26gt%3BSTREAM%20TO%20COMPUTE%20THE%20VALUE%20OF%26lt%3B%2Fparam%26gt%3B%0D%0A%20%20%20%20%20%20%20%20%2F%2F%2F%20%26lt%3Bparam%20name%3D%26quot%3Bclo" title="del.icio.us"><img src="http://michael.chanceyjr.com/site/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://michael.chanceyjr.com/useful-code/md5-stream-extension/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Generic Serializer Extension</title>
		<link>http://michael.chanceyjr.com/useful-code/generic-serializer/</link>
		<comments>http://michael.chanceyjr.com/useful-code/generic-serializer/#comments</comments>
		<pubDate>Mon, 23 Nov 2009 03:43:11 +0000</pubDate>
		<dc:creator>Michael E. Chancey Jr.</dc:creator>
				<category><![CDATA[Useful Code]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[C-Sharp]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[CSharp]]></category>
		<category><![CDATA[Extension]]></category>
		<category><![CDATA[Generic]]></category>
		<category><![CDATA[Serialize]]></category>

		<guid isPermaLink="false">http://michael.chanceyjr.com/site/?p=238</guid>
		<description><![CDATA[/// &#60;summary&#62; /// TURN AN OBJECT INTO AN XML REPRESENTATION /// &#60;/summary&#62; /// &#60;typeparam name=&#34;t&#34;&#62;TYPE OF OBJECT TO SERIALIZE&#60;/typeparam&#62; /// &#60;param name=&#34;obj&#34;&#62;INCOMING OBJECT TO BE SERIALIZED&#60;/param&#62; /// &#60;returns&#62;STRING REPRESENTAION OF THE OBJECT&#60;/returns&#62; public static string Serialize&#60;t&#62;(this t obj) { //MAKE SURE THE TYPE WHICH WAS PASSED IN IS SERIALIZABLE if(!typeof(t).IsSerializable) throw new ArgumentException(&#34;Invalid type specified [...]]]></description>
			<content:encoded><![CDATA[<pre class="brush: csharp;">
        /// &lt;summary&gt;
        /// TURN AN OBJECT INTO AN XML REPRESENTATION
        /// &lt;/summary&gt;
        /// &lt;typeparam name=&quot;t&quot;&gt;TYPE OF OBJECT TO SERIALIZE&lt;/typeparam&gt;
        /// &lt;param name=&quot;obj&quot;&gt;INCOMING OBJECT TO BE SERIALIZED&lt;/param&gt;
        /// &lt;returns&gt;STRING REPRESENTAION OF THE OBJECT&lt;/returns&gt;
        public static string Serialize&lt;t&gt;(this t obj)
        {
            //MAKE SURE THE TYPE WHICH WAS PASSED IN IS SERIALIZABLE
            if(!typeof(t).IsSerializable)
                throw new ArgumentException(&quot;Invalid type specified for serialization, type must contain Serializeable Attribute&quot;);

            //IF THE TYPE CAN BE SERIALIZED THEN CREATE A MEMORY STREAM TO HOLD THE DATA
            using (MemoryStream tmpMem = new MemoryStream())
            {
                XmlSerializer tmpSeriazlie = new XmlSerializer(typeof(t));
                tmpSeriazlie.Serialize(tmpMem, obj);

                //RETURN THE XML RESULT OF SERIALIZING THE OBJECT
                return System.Text.ASCIIEncoding.ASCII.GetString(tmpMem.ToArray());
            }
        }

        /// &lt;summary&gt;
        /// TURN AN XML STRING INTO AN OBJECT REPRESENTATION
        /// &lt;/summary&gt;
        /// &lt;typeparam name=&quot;t&quot;&gt;TYPE OF OBJECT REPRESENTED IN THE XML&lt;/typeparam&gt;
        /// &lt;param name=&quot;s&quot;&gt;XML STRING OF THE OBJECT&lt;/param&gt;
        /// &lt;returns&gt;DESERIALIZED OBJECT&lt;/returns&gt;
        public static t Deserialize&lt;t&gt;(this string s)
        {
            //MAKE SURE THE TYPE WHICH WAS PASSED IN IS SERIALIZABLE
            if (!typeof(t).IsSerializable)
                throw new ArgumentException(&quot;Invalid type specified for deserialization, type must contain Serializeable Attribute&quot;);

            //IF THE TYPE CAN BE DESERIALIZED THEN CREATE A MEMORY STREAM HOLDING THE XML DATA
            using (MemoryStream tmpMem = new MemoryStream(System.Text.ASCIIEncoding.ASCII.GetBytes(s)))
            {
                XmlSerializer tmpSerialize = new XmlSerializer(typeof(t));

                //RETURN THE OBJECT RESULT OF  DESERIALIZING THE XML
                return (t)tmpSerialize.Deserialize(tmpMem);
            }
        }
</pre>



Share


	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=Generic%20Serializer%20Extension%20-%20http%3A%2F%2Fmichael.chanceyjr.com%2Fuseful-code%2Fgeneric-serializer%2F" title="Twitter"><img src="http://michael.chanceyjr.com/site/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fmichael.chanceyjr.com%2Fuseful-code%2Fgeneric-serializer%2F&amp;title=Generic%20Serializer%20Extension&amp;bodytext=%5Bcsharp%5D%0D%0A%20%20%20%20%20%20%20%20%2F%2F%2F%20%26lt%3Bsummary%26gt%3B%0D%0A%20%20%20%20%20%20%20%20%2F%2F%2F%20TURN%20AN%20OBJECT%20INTO%20AN%20XML%20REPRESENTATION%0D%0A%20%20%20%20%20%20%20%20%2F%2F%2F%20%26lt%3B%2Fsummary%26gt%3B%0D%0A%20%20%20%20%20%20%20%20%2F%2F%2F%20%26lt%3Btypeparam%20name%3D%26quot%3Bt%26quot%3B%26gt%3BTYPE%20OF%20OBJECT%20TO%20SERIALIZE%26lt%3B%2Ftypeparam%26gt%3B%0D%0A%20%20%20%20%20%20%20%20%2F%2F%2F%20%26lt%3Bparam%20name%3D%26quo" title="Digg"><img src="http://michael.chanceyjr.com/site/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fmichael.chanceyjr.com%2Fuseful-code%2Fgeneric-serializer%2F&amp;title=Generic%20Serializer%20Extension" title="StumbleUpon"><img src="http://michael.chanceyjr.com/site/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fmichael.chanceyjr.com%2Fuseful-code%2Fgeneric-serializer%2F&amp;title=Generic%20Serializer%20Extension&amp;notes=%5Bcsharp%5D%0D%0A%20%20%20%20%20%20%20%20%2F%2F%2F%20%26lt%3Bsummary%26gt%3B%0D%0A%20%20%20%20%20%20%20%20%2F%2F%2F%20TURN%20AN%20OBJECT%20INTO%20AN%20XML%20REPRESENTATION%0D%0A%20%20%20%20%20%20%20%20%2F%2F%2F%20%26lt%3B%2Fsummary%26gt%3B%0D%0A%20%20%20%20%20%20%20%20%2F%2F%2F%20%26lt%3Btypeparam%20name%3D%26quot%3Bt%26quot%3B%26gt%3BTYPE%20OF%20OBJECT%20TO%20SERIALIZE%26lt%3B%2Ftypeparam%26gt%3B%0D%0A%20%20%20%20%20%20%20%20%2F%2F%2F%20%26lt%3Bparam%20name%3D%26quo" title="del.icio.us"><img src="http://michael.chanceyjr.com/site/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://michael.chanceyjr.com/useful-code/generic-serializer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

