所以我在一个dll执行测试有以下:C#:如何使一个方法调用现有对象的静态成员上
--test.dll--
namespace MyNamespace
{
internal class foo
{
private static bar myBarClass = new bar();
]
internal class bar
{
public void aMethod();
}
}
----
现在在另一个节目,我有富的现有实例(通过反射获得)。现在我想从现有的foo实例的myBarClass中调用方法aMethod()。不知道如何做到这一点。
foo myFooObject = GetInstanceOfFoo(); //i get an instance of foo via reflection
Assembly testAssembly= Assembly.LoadFrom(c:\test.dll);
object o = testAssembly.CreateInstance("MyNamespace.bar");
Type t = o.GetType();
BindingFlags bf = BindingFlags.Instance | BindingFlags.NonPublic;
MethodInfo mi = t.GetMethod("aMethod", bf);
mi.Invoke(<notsurewhatgoeshere!>, null);
我能够得到正确的方法信息。我的问题是在mi.Invoke中,如何在现有的foo.bar实例上调用该方法?
感谢
你是否确定你应该使用反射? – SLaks 2010-12-09 19:59:37
我相信你通过o实例...不是100%所以不张贴为答案... – 2010-12-09 20:01:02
@SLaks我认为(希望)@Justin别无选择 - 如果他有控制`test.dll`中的代码,该解决方案肯定会揭露该实例及其方法... – 2010-12-09 20:02:24