我得到一个Type.InvokeMember时方法有一个字典参数
方法。
当我改变的MyMethod
一个参数从Hashtable
到Dictionary<string, string>
。
的invoke调用是
return = t.InvokeMember("MyMethod", (BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.InvokeMethod), null, instance, params);
当我做
Type type = a.GetType(String.Concat(DLLName, ".MyClass"));
var methods = t.GetMethods();
methods
包含MyMethod()
所以它的存在。
任何人都可以摆脱任何光线?
的params
是
Object[] params = new Object[11];
...
params[5] = foo.myHashtable.Cast<DictionaryEntry>().ToDictionary(d => d.Key, d => d.Value);
...
的的MyMethod签名
public MyMethodReturn MyMethod(Byte[] m, Hashtable d, Mutex mut, FileStream logFile, Hashtable t, Dictionary<string, Byte[]> fields, bool e, byte[] k, int hashCode, bool h, Byte[] mm)
'foo.myHashtable.Cast()。ToDictionary(d => d.Key,d => d.Value);'实际上并没有将字典放到任何地方 - 它只是将它放在地板上垃圾收集器来处理;你把这个分配给一个变量或任何东西?更好:你可以显示*实际*代码*实际*调用'InvokeMember'你的输入?最好是MyMethod的* actual *签名(因为我担心可能潜伏在'...'中) –
我没有正确复制和粘贴。编辑。好的。 –