C# 4.0 使用C将类对象作为调用方法的参数传递

C# 4.0 使用C将类对象作为调用方法的参数传递,c#-4.0,.net-4.0,C# 4.0,.net 4.0,使用Invoke方法将类对象作为参数发送的语法是什么 调用方法调用导致错误: “MSM\u ns.MyParameterClass”类型的对象无法转换为“MSM\u ns.MyParameterClass”类型 基本数据类型的参数工作正常,但复杂的数据类型会导致错误 byte[] data = new byte[] { 0x01, 0x02, 0x03, 0x04 }; MyParameterClass myParams = new MyParametersClass("ABC", 123,

使用Invoke方法将类对象作为参数发送的语法是什么

调用方法调用导致错误:

“MSM\u ns.MyParameterClass”类型的对象无法转换为“MSM\u ns.MyParameterClass”类型

基本数据类型的参数工作正常,但复杂的数据类型会导致错误

byte[] data = new byte[] { 0x01, 0x02, 0x03, 0x04 };

MyParameterClass myParams = new MyParametersClass("ABC", 123, 3.14159);

// attach to the dll
MethodInfo dllMethodInfo = Invoke.LoadDLL("MSM.dll", "MSM_ns", "MSMClass", "MSMMethod1");

// attach the parameters
object[] parameters = new object[2];
parameters[0] = data; 
parameters[1] = myParams;

// call the DLL
bool result = (bool)dllMethodInfo.Invoke(null, parameters);

--------

public static bool MSMMethod1(ref byte[] dataToVerify, MyParameterClass myParams)
{
   . . .
}

您加载同一程序集两次,使用两个相同但不兼容的类型


您只需加载程序集一次。

参数几乎肯定不应该是refWhat's Invoke.LoadDLL?//MethodInfo dllMethodInfo=Invoke.LoadDLLMSM.dll,MSM_ns,MSMClass,msmethod1;Assembly dll=Assembly.LoadFileMSM.dll;类型classObj=dll.GetTypeMSM_ns+。+MSM类;MethodInfo dllMethodInfo=classObj.GetMethodMSMMethod1//MethodInfo dllMethodInfo=Invoke.LoadDLLMSM.dll,MSM_ns,MSMClass,msmethod1;Assembly dll=Assembly.LoadFileMSM.dll;类型classObj=dll.GetTypeMSM_ns+。+MSM类;MethodInfo dllMethodInfo=classObj.GetMethodMSMMethod1;