所以我在一個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