2011-06-15 76 views
0
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace Processor 
{ 
    public class InvoiceProcessorTest 
    { 
     public void Process(String entity) 
     { 
      GenerateInvoice generateInvoice = new GenerateInvoice(); 
      generateInvoice.Process(entity); 
     } 
     public string ProcessTest(String str) 
     { 
      return "testString"; 
     } 
    } 
} 

我的代碼讀取方法是在反思.NET入門MethodMissingException

Assembly processorAssembly = Assembly.LoadFile("ProjectDLL.dll"); 
AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve); 

Type myType= processorAssembly.GetType("Processor.InvoiceProcessorTest"); 
object myObj = Activator.CreateInstance(myType); 

Console.WriteLine((string)myType.InvokeMember("ProcessTest", BindingFlags.InvokeMethod | BindingFlags.Instance | BindingFlags.Public, null, myObj , new object[] { "Pramod" })); 

我想打電話給InvoiceProcessorTest類的ProcessTest方法。

myType.GetMethods()向我展示了來自班級的兩種方法。

但是,當我InvokeMember,它返回一個缺少MethodException。 Namespace.InvoiceProcessorTest.ProcessTest沒有找到

+1

什麼'submitOfferType'?一個簡短但完整的例子在這裏真的很有幫助。 – 2011-06-15 08:03:44

+0

只需檢查這第一個http://blogs.msdn.com/b/suzcook/archive/2004/02/13/debugging-a-missingmethodexception-missingfieldexception-typeloadexception.aspx – Zenwalker 2011-06-15 08:11:40

+0

您的第一個代碼塊調用您的類'Processor.InvoiceProcessorTest '但第二個假設它是'Namespace.InvoiceProcessorTest'。然而,這會導致不同的錯誤,然後你描述的那個,所以我懷疑這些代碼塊之一是不一樣的,你正在使用。 – 2011-06-15 08:29:49

回答

0

嘗試

Console.WriteLine((string)myType.InvokeMember(......... 

使用mytype.InvokeMember

+0

Umesh我在我的應用程序中使用了相同的代碼,我發佈了示例代碼 – PramodChoudhari 2011-06-15 08:55:02

+0

,只是檢查您是否使用了正確的(最新的)ProjectDLL.dll。我檢查了它的代碼工作正常 – 2011-06-15 09:10:33