反射是.net提供的用来访问类或者类里面的内容的一项技术,它允许你在编译时对一个类基本上一无所知的情况下对一个类进行访问,支持利用一个字符串对类进行发现、访问、调用等,以下利用实例介绍四种使用反射的方法
首先祭出一个类,用于模拟被调用的类
public class TestClass
{
private string testType;
public string TestType
{
get { return testType; }
set { testType = value; }
}
private string testType2;
public string TestType2
{
get { return testType2; }
set { testType2 = value; }
}
public TestClass()
{
testType2 = "test";
}
public int test1()
{
int i = 1;
i++;
return i;
}
public void testsomething()
{
int i = 0;
}
}
以上代码仅供测试,一般情况下估计没人会写出这样的代码,莫要鄙视,为了模拟反射的调用,我把这个类封装在一个叫testlibrary.dll的类库里面。
接着先把这四种方法的代码列出来先,之后注意解释
delegate void delegatetest(Type t);
private const BindingFlags flags = BindingFlags.DeclaredOnly | BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance;
//方法1
private void TestInvoke1(Type t)
{
object obj = t.InvokeMember(null, flags | BindingFlags.CreateInstance, null, null, null);
Console.WriteLine(obj.GetType().ToString());
string testresult=