title: Object of type 'customObject' cannot be converted to type 'customObject'
body: <p>I receive the following error when I invoke a custom  object<br>
  <code>"Object of type 'customObject' cannot be converted to type 'customObject'."</code></p>
  
  <p>Following is the scenario when I am get this error:</p>
  
  <ul>
  <li>I invoke a method in a dll dynamically.</li>
  <li>Load an assembly</li>
  <li>CreateInstance....</li>
  </ul>
  
  <p>When calling MethodInfo.Invoke() passing int, string as a parameter for my method works fine => No exceptions are thrown.</p>
  
  <p>But if I try and pass one of my own custom class objects as a parameter, then I get an <code>ArgumentException</code> exception, and it is not either an <code>ArgumentOutOfRangeException</code> or <code>ArgumentNullException</code>.</p>
  
  <p><code>"Object of type 'customObject' cannot be converted to type 'customObject'."</code></p>
  
  <p>I am doing this in a web application.</p>
  
  <p>The class file containing the method is in a different project. Also the custom object is a separate class in the same file.</p>
  
  <p>There is no such thing called a <code>static assembly</code> in my code. I am trying to invoke a webmethod dynamically. this webmethod is having the customObject type as an input parameter. So when i invoke the webmethod i am dynamically creating the proxy assembly and all. From the same assembly i am trying to create an instance of the cusotm object assinging the values to its properties and then passing this object as a parameter and invoking the method. everything is dynamic and nothing is created static.. :( </p>
  
  <p>add reference is not used.
  Following is a sample code i tried to create it</p>
  
  <pre><code>public static object CallWebService(string webServiceAsmxUrl, string serviceName, string methodName, object[] args) 
      { 
          System.Net.WebClient client = new System.Net.WebClient(); 
          //-Connect To the web service 
          using (System.IO.Stream stream = client.OpenRead(webServiceAsmxUrl + "?wsdl")) 
          { 
              //--Now read the WSDL file describing a service. 
              ServiceDescription description = ServiceDescription.Read(stream); 
              ///// LOAD THE DOM ///////// 
              //--Initialize a service description importer. 
              ServiceDescriptionImporter importer = new ServiceDescriptionImporter(); 
              importer.ProtocolName = "Soap12"; // Use SOAP 1.2. 
              importer.AddServiceDescription(description, null, null); 
              //--Generate a proxy client. importer.Style = ServiceDescriptionImportStyle.Client; 
              //--Generate properties to represent primitive values. 
              importer.CodeGenerationOptions = System.Xml.Serialization.CodeGenerationOptions.GenerateProperties; 
              //--Initialize a Code-DOM tree into which we will import the service. 
              CodeNamespace nmspace = new CodeNamespace(); 
              CodeCompileUnit unit1 = new CodeCompileUnit(); 
              unit1.Namespaces.Add(nmspace); 
              //--Import the service into the Code-DOM tree. This creates proxy code 
              //--that uses the service. 
              ServiceDescriptionImportWarnings warning = importer.Import(nmspace, unit1); 
              if (warning == 0) //--If zero then we are good to go 
              { 
                  //--Generate the proxy code  
                  CodeDomProvider provider1 = CodeDomProvider.CreateProvider("CSharp"); 
                  //--Compile the assembly proxy with the appropriate references 
                  string[] assemblyReferences = new string[5] { "System.dll", "System.Web.Services.dll", "System.Web.dll", "System.Xml.dll", "System.Data.dll" }; 
                  CompilerParameters parms = new CompilerParameters(assemblyReferences); 
                  CompilerResults results = provider1.CompileAssemblyFromDom(parms, unit1); 
                  //-Check For Errors 
                  if (results.Errors.Count &gt; 0) 
                  { 
                      StringBuilder sb = new StringBuilder(); 
                      foreach (CompilerError oops in results.Errors) 
                      { 
                          sb.AppendLine("========Compiler error============"); 
                          sb.AppendLine(oops.ErrorText); 
                      } 
                      throw new System.ApplicationException("Compile Error Occured calling webservice. " + sb.ToString()); 
                  } 
                  //--Finally, Invoke the web service method  
                  Type foundType = null; 
                  Type[] types = results.CompiledAssembly.GetTypes(); 
                  foreach (Type type in types) 
                  { 
                      if (type.BaseType == typeof(System.Web.Services.Protocols.SoapHttpClientProtocol)) 
                      { 
                          Console.WriteLine(type.ToString()); 
                          foundType = type; 
                      } 
                  } 
  
                  object wsvcClass = results.CompiledAssembly.CreateInstance(foundType.ToString()); 
                  MethodInfo mi = wsvcClass.GetType().GetMethod(methodName); 
                  return mi.Invoke(wsvcClass, args); 
              } 
              else 
              { 
                  return null; 
              } 
          } 
      } 
  </code></pre>
  
  <p>I can't find anything <code>static</code> in what I do.</p>
  
  <p>Any help is greatly appreciated.</p>
  
  <p>Regards,
  Phani Kumar PV</p>