title: extending Convert.ChangeType to produce user-defined types on request
body: <p>Given the class:</p>
  
  <pre><code>public class Foo
  {
      public string Name { get; set; }
  }
  </code></pre>
  
  <p>Is it possible to have a Foo instance created from a string through Convert.ChangeType:</p>
  
  <pre><code>Type type = typeof(Foo);
  object value = "one";
  
  value = System.Convert.ChangeType(value, type);
  </code></pre>
  
  <p>This is how a 3rd party API is attempting to rebuild objects.  Someone mentioned this is possible with implicit operators, but from my understanding that will let me do the following, not create the object:</p>
  
  <pre><code>Foo foo = new Foo() { Name = "one" };
  string fooAsString = foo;  // implicit conversion -- no cast needed
  </code></pre>
  
  <p>Is there a way to create the object this way?  Also, I do have the ability to change the Convert.ChangeType if there is another way to do this.</p>
  
  <p><strong>Update:</strong> 
  The reason I am asking is because it throws and exception:</p>
  
  <blockquote>
    <p>Invalid cast from 'System.String' to
    'JibbaJabba+Foo'.</p>
  </blockquote>
  
  <p>and adding the operator did not resolve the issue.</p>