ยกตัวอย่างชั้นเรียนต่อไปนี้:
class Sometype
{
int someValue;
public Sometype(int someValue)
{
this.someValue = someValue;
}
}
จากนั้นฉันต้องการสร้างอินสแตนซ์ประเภทนี้โดยใช้การสะท้อน:
Type t = typeof(Sometype);
object o = Activator.CreateInstance(t);
โดยปกติสิ่งนี้จะใช้งานได้อย่างไรก็ตามเนื่องจากSomeType
ไม่ได้กำหนดคอนสตรัคเตอร์แบบไม่มีพารามิเตอร์การเรียกใช้Activator.CreateInstance
จะทำให้เกิดข้อยกเว้นของประเภทที่MissingMethodException
มีข้อความ " ไม่มีตัวสร้างที่ไม่มีพารามิเตอร์กำหนดไว้สำหรับอ็อบเจ็กต์นี้ " มีวิธีอื่นในการสร้างอินสแตนซ์ของประเภทนี้หรือไม่ มันเป็นเรื่องที่แย่มากที่จะเพิ่มตัวสร้างแบบไม่มีพารามิเตอร์ให้กับทุกชั้นเรียนของฉัน
FormatterServices.GetUninitializedObject
ไม่อนุญาตให้สร้างสตริงที่ไม่ได้เริ่มต้น คุณอาจได้รับข้อยกเว้น:System.ArgumentException: Uninitialized Strings cannot be created.
โปรดระลึกไว้เสมอ