2014-01-06 32 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