title: Error on returning Generic Type (No implicit Conversion)
body: <p>Getting an implicit conversion exception when calling a generic method. What is the right way of doing this? </p>
  
  <p>Here are my interface and class definitions:</p>
  
  <pre><code>public interface TestData
  {
      string field { get; set; }
      string fieldName { get; set; }
      string type { get; set; }
  }
  
  public class TestClass
  {
      public static T Call&lt;T&gt;(string Project, string type) where T : TestData
      {
          var returning = GETCG&lt;T&gt;(test, type);
  
          return (T)Convert.ChangeType(returning, typeof(T), CultureInfo.InvariantCulture);
      }
  
      private static T GETCG&lt;T&gt;(string test, string type) where T : TestData
      {
          var fields = nodees.Cast&lt;XmlNode&gt;().Select(x =&gt; new
          {
              // some data
          }).ToList();
  
          if (fields != null)
          {
              return (T) Convert.ChangeType(templateFields, typeof(T), 
                  CultureInfo.InvariantCulture);
          }
          else
          {
              return (T)Convert.ChangeType("SomeString", typeof(T), 
                  CultureInfo.InvariantCulture);
          }
      }
  }
  </code></pre>
  
  <p>I'm getting the following exception:</p>
  
  <blockquote>
    <p>The type 'System.Collections.Generic.List' cannot be used as type parameter 'T' in the generic type or method 'TestClass.Call(string, string)'. There is no implicit reference conversion from 'System.Collections.Generic.List' to 'Test.TestData'</p>
  </blockquote>
  
  <p>On the line of code below:</p>
  
  <pre><code>var test = TestClass.Call&lt;List&lt;TestData&gt;&gt;("ProjName", "Audio");
  </code></pre>
  
  <p>If you see in the <code>GETCG</code> method I'm returning different types <code>List</code> and <code>string</code>. Methods <code>Call</code> and <code>GETCG</code> implement the interface <code>TestData</code>. Can I have an explanation why I'm getting this error and how can I improve this code keeping in mind I need to return both <code>strings</code> and <code>List</code> from the <code>TestClass</code></p>