這幾天看了不少C#方面的知識,感覺看了之後一段時間後就忘了,特寫個備忘,免得忘了又要從頭找起.
定義:Reflection,通過它我們可以在運行時動態獲得各種資訊,如程式集、模組、類型、欄位、屬性、方法和事件
自己參考資料後寫的代碼:
using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;
namespace Refelction
{
class Program
{
static void Main(string[] args)
{
string a = "", myword = "";
Test mytest;
do
{
a = Console.ReadLine().ToString();
if (a == "1")
{
myword = "test1";
}
else
{
myword = "test2";
}
Console.WriteLine(myword);
mytest = (Test)Assembly.Load("Refelction").CreateInstance("Refelction." + myword);
}
while (a.ToUpper() != "Y");
Assembly ass;
Type type;
object obj;
try
{
ass = Assembly.LoadFile(@"E:\學習源碼\反射\test3\bin\Debug\test3.dll");
type = ass.GetType("test3.Class1");//必須使用名稱空間+類名稱
System.Reflection.MethodInfo method = type.GetMethod("test4");//方法的名稱
obj = ass.CreateInstance("test3.Class1");//必須使用名稱空間+類名稱
string s = (string)method.Invoke(obj, new string[] { "\n測試!" }); //執行個體方法的調用
Console.WriteLine(s);
Console.ReadLine();
}
catch
{
}
}
}
public abstract class Test
{
public abstract void myprint();
}
public class test1 : Test
{
public override void myprint()
{
Console.WriteLine("this is test1");
}
}
public class test2 : Test
{
public override void myprint()
{
Console.WriteLine("this is test2");
}
}
}