2014-01-06 50 views
0

我有一些方法,如 this.UIMap.FirstName,this.UIMap.LastName,this.UIMap.Email等等..在我的編碼的UI設計器。 頁面中的每個字段在設計器中都有一個方法。 我正在準備一個框架,字段名稱取自excel,相應的方法應該執行並且結果應該寫入excel的最後一個STATUS列中的字段名稱。通過字符串動態調用方法

我是否讓自己清楚? :) 如果是這樣,我如何打電話給這樣的方法。 我寫了這樣的事情:

string fieldname = WorkSheet.Cells[i, 2].Value;       
    UIMap uimap = new UIMap(); 
    Type thisType = typeof(UIMap); 
    thisType.InvokeMember(fieldname , BindingFlags.InvokeMethod | BindingFlags.Public, 
null, uimap,null); 

但它拋出錯誤爲:

試驗方法SampleDemo.CodedUITest1.CodedUITestMethod1拋出異常: system.missingMethodException而:方法SampleDemo.UIMap.FirstName1「不找到。

回答

0

你的名字是一個函數或者它只是一個屬性,如果它是一個屬性,因此你可以得到價值從它不調用一個方法通過反射

typeof(UIMap).GetProperty("FirstName").GetValue(this.UIMap) 

這樣的代碼

+0

這是一個功能? ( – user3073184

+0

無論如何,我已經差不多了它的一半..「SampleDemo.UIMap.FirstName1」被稱爲..我想設計器被稱爲而不是SampleDemo ..任何建議? – user3073184

+0

添加BindingFlags.Instance應該解決問題,但我想你已經知道了這個。UIMap是一個部分類,其中一半來自UIMap.Designer.cs,它是從在UIMap.uitest中。所以我會說你的代碼正在調用正確的方法。 – kida