C#通过内联传递参数并作为局部变量的反射调用方法

C#通过内联传递参数并作为局部变量的反射调用方法,c#,reflection,C#,Reflection,我有以下代码。它有问题。呼吁 MyMethod不返回基于 已传递输入值 foreach (var input in inputCollection) { var result = myInstance.GetType().InvokeMember("MyMethod", BindingFlags.InvokeMethod | BindingFlags.Public, null, myInstance, new Object[] { inp

我有以下代码。它有问题。呼吁 MyMethod不返回基于 已传递输入值

foreach (var input in inputCollection)
            {

var result = myInstance.GetType().InvokeMember("MyMethod",
    BindingFlags.InvokeMethod | BindingFlags.Public,
    null,
    myInstance,
    new Object[] { input })
}
相反,如果我执行以下操作,它将按预期工作并返回 基于提供的输入值的不同输出

foreach (var input in inputCollection)
            {
var args = new Object[] { input };

var result = myInstance.GetType().InvokeMember("MyMethod",
    BindingFlags.InvokeMethod | BindingFlags.Public,
    null,
    myInstance,
    args)
}
如果我将参数与对象初始值设定项内联并通过本地传递,这里可能会有什么不同 变量

编辑: 在非工作代码中,它总是返回InputCollection的第一项的结果,而不考虑输入的当前迭代值

谢谢
杰伊

没有区别。你的问题在别的地方。请发布实际代码(因为您发布的代码甚至没有编译…)。请参阅。
inputCollection
是一个集合还是通过LINQ生成的带有延迟执行的
IEnumerable
?您是否立即打印/使用
结果
,或者是否有其他事情与延迟执行有关?@dasblinkenlight Yes。我马上就把结果消耗掉。它是inputCollection是一个列表,其中T是任何类。@JayNanavaty然后还有其他事情发生。试着在一个单独的例子中复制它——比如,在ideone.com上,并发布一个链接到一个断开的实时示例。除此之外,您需要
BindingFlags.Instance
,除非该方法是静态的(在这种情况下,您不会将
myInstance
传递给
InvokeMember
),否则它们应该是相同的。我已经花时间去了。所以还有别的事情发生了