溫馨提示×

怎樣通過System.Reflection創建實例

小樊
84
2024-10-16 18:47:16
欄目: 編程語言

在C#中,使用System.Reflection類可以動態地創建對象實例。以下是一個簡單的示例,展示了如何使用反射來創建一個類的實例:

  1. 首先,確保你有一個要實例化的類。例如,我們有一個名為MyClass的簡單類:
public class MyClass
{
    public string Message { get; set; }

    public MyClass(string message)
    {
        Message = message;
    }
}
  1. 接下來,使用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();
  1. 使用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屬性值。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女