Để đặt ngay, bạn không thể làm điều đó.
Bạn thấy, thư mục "MasterType" cung cấp thông tin loại, được trình biên dịch sử dụng tại thời gian biên dịch.
Khi bạn viết một cái gì đó như Page.MasterPage.btn1.Text = "abcd"
, thì trình biên dịch cần biết cách xử lý phần "btn1" đó. Nó là gì? Nó là một lĩnh vực? Một tài sản? Một phương pháp? Một lớp lồng nhau? Hoặc có lẽ nó không tồn tại?
Để trả lời các câu hỏi này, trình biên dịch cần biết loại loại của biểu thức Page.MasterPage
. Và đó chính xác là những gì bạn cung cấp với chỉ thị "MasterType".
Thuộc tính VirtualPath về cơ bản nói "đi biên dịch tập tin khác trước và kết quả của quá trình biên dịch sẽ là loại thuộc tính chính của trang này". Đó là cách trình biên dịch biết. Từ tất cả những điều trên, người ta có thể rút ra một kết luận: không chỉ là không thể thay đổi kiểu của một số tài sản trong thời gian chạy, nó cũng không có ý nghĩa gì cả - mã đã được biên dịch, bạn không cần bất kỳ thông tin biên dịch-thời gian nữa!
Vì vậy, câu hỏi tiếp theo nảy sinh là: tại sao bạn muốn thực hiện điều này ngay từ đầu?
Nếu bạn chỉ muốn sử dụng các thuộc tính khác nhau được khai báo trong các trang cái khác nhau, bạn có thể lấy lời khuyên của Nick Craver và Nathan Taylor và khai báo một lớp cơ sở có tất cả các trường/thuộc tính đó từ lớp cơ sở đó, và sau đó có chỉ thị MasterType của bạn chỉ định lớp cơ sở đó thông qua thuộc tính TypeName.
Tuy nhiên, tôi sẽ chỉ đi theo cách này nếu cả hai trang chính giống nhau về logic, chỉ khác nhau về thiết kế. Có nghĩa là, một trang không nên có bất kỳ thuộc tính nào mà trang kia không có. Nếu không, nó chỉ là không đúng để có hai tập hợp con của các thuộc tính/phương thức/trường trong một lớp (mà sẽ là lớp cơ sở) khi chỉ có một trong các tập hợp con được sử dụng bất cứ lúc nào. Và nó không phải là đúng để tạo ra một cơ sở chung cho hai lớp khi không thực sự là một cơ sở chung ở đó. Aka "thiết kế xấu". Trong trường hợp này, bạn nên suy nghĩ lại về thiết kế ban đầu của mình.
Nếu mục đích của bạn là một số mục đích khác - vui lòng giải thích và tôi sẽ cố gắng đưa ra một số giải pháp cho bạn.
Chúc may mắn với điều đó.
Althoght bạn đã đưa ra một câu trả lời đẹp đó không phải là giải pháp. Nhưng vì nó là rất hữu ích cho khách truy cập hơn nữa, tôi sẽ đánh dấu nó là Userfull. :) – Marco
Nó không phải là một giải pháp, bởi vì không có. :-) Và trong câu trả lời của tôi, tôi cố gắng giải thích một cách cẩn thận tại sao. –