Tôi có một lớp cơ sởThừa kế C#. lớp được thừa kế từ lớp cơ sở
public class A
{
public string s1;
public string s2;
}
Tôi cũng có một lớp có nguồn gốc:
public class B : A
{
public string s3;
}
Giả sử chương trình của tôi tạo ra một thể hiện của lớp A.
A aClassInstance = new A();
một số thông số đã được đặt:
aClassInstance.s1 = "string 1";
aClassInstance.s2 = "string 2";
Tại thời điểm này, tôi muốn tạo một thể hiện của lớp B. Nhưng tôi muốn B đã có các giá trị thẩm của tôi về lớp A.
này đã không làm việc:
public B bClassInstance = new B():
bClassInstance = (B)aClassInstance;
cẢ DID NÀY:
Made một phương pháp nhân bản trong lớp A.
public B cloneA() {
A a = new A();
a = (A)this.MemberwiseClone()
return(B)a;
}
mã VS mất cả những điều trên - bu t tôi nhận được lỗi run-time
Xin giúp
Hãy cẩn thận khi nhân bản - đặc biệt nếu lớp của bạn có các trường tham chiếu có thể thay đổi. Quyết định xem bạn có muốn bản sao sâu hay bản sao nông và ghi lại nó hay không. – TrueWill
đúng. Lớp đặc biệt này không có tham chiếu, do đó một bản sao nông hoạt động cho nó. Tôi đã tìm thấy một bài đăng tốt về nông và nhân bản sâu ở đây cho bất kỳ ai quan tâm: http://itpksingh.blogspot.com/2009/08/shallow-copyingdeep-copyingobject.html – Sam
Tìm thấy một giải pháp sử dụng ValueInjector. StackOverFlow không cho phép tôi "trả lời câu hỏi của riêng tôi". Khi đó, sẽ đăng chi tiết đầy đủ. – Sam