【工作经历:阿里巴巴搜索技术研发中心QA ,百度新产品测试部QA】
【领域:测试分析,自动化测试,性能测试,安全测试 】
【个人定位:高级测试工程师+培训师+领域产品专家】
c#反射机制和一个简单的例子
上一篇 /
下一篇 2008-07-30 19:29:15
/ 个人分类:自动化测试
上次搜狐的
面试人员问我
自动化测试里反射的应用。我当时不知道反射机制的具体应用。
回头看了一下,才终于明白了反射的定义。以前只知道是rename和得到当前的方法。
没有想到,竟然可以执行自动化操作。怪不得他们问我了。
研究了一下msdn。然后从里面提取了一个不错的小例子。对于理解反射非常有帮助。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Reflection;
namespace ConsoleApplication1 { class Program { static void Main(string[] args) { test1(); Console.ReadKey(); } public static void test1() { // Loads an assembly using its file name. Assembly a = Assembly.LoadFrom(@"F:\Documents and Settings\v-yahuan\Desktop\ttt\TestRun0501\WinApp\bin\Debug\WinApp.exe"); // Gets the type names from the assembly. Type[] types2 = a.GetTypes(); foreach (Type t in types2) { Console.WriteLine(t.FullName); foreach (MemberInfo m in t.GetMethods()) { Console.WriteLine("methods " + m.Name); } } Console.WriteLine(); }
public static void test2() {
Type t = typeof(ConsoleApplication1.Program); Console.WriteLine("Listing all the members (public and non public) of the {0} type", t);
// Lists static fields first. FieldInfo[] fi = t.GetFields(BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Public); Console.WriteLine("// Static Fields"); PrintMembers(fi);
// Static properties. PropertyInfo[] pi = t.GetProperties(BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Public); Console.WriteLine("// Static Properties"); PrintMembers(pi);
// Static events. EventInfo[] ei = t.GetEvents(BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Public); Console.WriteLine("// Static Events"); PrintMembers(ei);
// Static methods. MethodInfo[] mi = t.GetMethods(BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Public); Console.WriteLine("// Static Methods"); PrintMembers(mi);
// Constructors. ConstructorInfo[] ci = t.GetConstructors(BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public); Console.WriteLine("// Constructors"); PrintMembers(ci);
// Instance fields. fi = t.GetFields(BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public); Console.WriteLine("// Instance Fields"); PrintMembers(fi);
// Instance properites. pi = t.GetProperties(BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public); Console.WriteLine("// Instance Properties"); PrintMembers(pi);
// Instance events. ei = t.GetEvents(BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public); Console.WriteLine("// Instance Events"); PrintMembers(ei);
// Instance methods. mi = t.GetMethods(BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public); Console.WriteLine("// Instance Methods"); PrintMembers(mi);
Console.WriteLine("\r\nPress ENTER to exit."); Console.Read(); }
public static void PrintMembers(MemberInfo[] ms) { foreach (MemberInfo m in ms) { Console.WriteLine("{0}{1}", " ", m); } Console.WriteLine();
} } }
|
相关阅读:
- 网上找了个adodb.stream对象的方法/属性介绍 (zte_boy, 2008-7-23)
- [转载]自动化测试在功能测试中的应用 (lzzoz, 2008-7-25)
- 老婆测试工具培训记-qtp scriping-实践7 (pcl2004_27, 2008-7-25)
- 反编译maui (sihanjishu, 2008-7-25)
- 遍历一个窗口的子窗口代码 (sihanjishu, 2008-7-25)
- Visual Basic6.0实现自动化测试 (merchen, 2008-7-25)
- QTP和WR支持的框架 (Tesherlock, 2008-7-27)
- 你为什么要做自动化测试 (Kingson, 2008-7-27)
- 走向成熟的自动化测试技术——通信行业 (Kingson, 2008-7-27)
- 老婆测试工具培训记-Scripting-实践8 (pcl2004_27, 2008-7-29)
收藏
举报
TAG:
自动化测试