Я получаю следующую ошибку при вызове пользовательского объекта
"Object of type 'customObject' cannot be converted to type 'customObject'."
Ниже приведен сценарий, когда я получаю эту ошибку:
- Я вызываю метод в dll динамически.
- Загрузить сборку
- CreateInstance ....
При вызове MethodInfo.Invoke (), передающем int, строка в качестве параметра для моего метода работает нормально => Никаких исключений не выдается.
Но если я попытаюсь передать один из моих собственных объектов класса в качестве параметра, тогда я получу исключение ArgumentException
, и оно не будет ArgumentOutOfRangeException
или ArgumentNullException
.
"Object of type 'customObject' cannot be converted to type 'customObject'."
Я делаю это в веб-приложении.
Файл класса, содержащий метод, находится в другом проекте. Также пользовательский объект - это отдельный класс в том же файле.
В моем коде нет такого понятия, как static assembly
. Я пытаюсь вызвать веб-метод динамически. этот веб-метод имеет тип customObject в качестве входного параметра. Поэтому, когда я вызываю веб-метод, я динамически создаю сборку прокси и все. Из той же сборки я пытаюсь создать экземпляр объекта cusotm, который присваивает значения его свойствам, а затем передает этот объект в качестве параметра и вызывает метод. все динамично и ничего не создается статично .. :(
Добавить ссылку не используется.
Ниже приведен пример кода, который я пытался создать
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 > 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;
}
}
}
Я ничего не могу найти static
в том, что я делаю.
Любая помощь очень ценится.
С уважением,
Phani Kumar PV