在C#中,使用System.Reflection
類可以動態地創建對象實例。以下是一個簡單的示例,展示了如何使用反射來創建一個類的實例:
MyClass
的簡單類:public class MyClass
{
public string Message { get; set; }
public MyClass(string message)
{
Message = message;
}
}
System.Reflection.Assembly
類加載包含該類的程序集。你可以使用Assembly.LoadFrom
方法或Assembly.LoadFile
方法來實現這一點。這里,我們將使用Assembly.LoadFrom
方法:Assembly assembly = Assembly.LoadFrom("YourAssemblyName"); // 替換為你的程序集名稱
注意:YourAssemblyName
應替換為包含MyClass
的程序集的實際名稱。
3. 使用assembly.GetType()
方法獲取MyClass
類型的Type
對象:
Type myClassType = assembly.GetType("MyNamespace.MyClass"); // 替換為你的命名空間和類名
注意:MyNamespace
應替換為包含MyClass
的類的實際命名空間。
4. 使用Type.GetConstructor()
方法獲取MyClass
的構造函數。你可以根據需要選擇構造函數,這里我們將使用無參數的構造函數:
ConstructorInfo constructor = myClassType.GetConstructor();
ConstructorInfo.Invoke()
方法創建MyClass
的實例:object instance = constructor.Invoke(null); // 無參數構造函數,因此傳遞null
現在,instance
變量包含了一個MyClass
的實例。你可以像使用任何其他對象一樣使用它,例如調用其屬性和方法:
string message = (string)instance.GetType().GetProperty("Message").GetValue(instance);
Console.WriteLine(message);
這將輸出MyClass
實例的Message
屬性值。