Lấy lớp sau làm ví dụ:
class Sometype
{
int someValue;
public Sometype(int someValue)
{
this.someValue = someValue;
}
}
Sau đó, tôi muốn tạo một phiên bản của loại này bằng cách sử dụng phản chiếu:
Type t = typeof(Sometype);
object o = Activator.CreateInstance(t);
Thông thường điều này sẽ hoạt động, tuy nhiên vì SomeType
chưa xác định một phương thức khởi tạo không tham số, lệnh gọi tới Activator.CreateInstance
sẽ ném một kiểu ngoại lệ MissingMethodException
với thông báo " Không có phương thức tạo không tham số nào được xác định cho đối tượng này. " Có cách nào thay thế để vẫn tạo một thể hiện của kiểu này không? Sẽ thật là tệ khi thêm các hàm tạo không tham số vào tất cả các lớp của tôi.
FormatterServices.GetUninitializedObject
không cho phép tạo chuỗi chưa khởi tạo. Bạn có thể nhận được ngoại lệ:System.ArgumentException: Uninitialized Strings cannot be created.
Hãy ghi nhớ điều này.