Tôi là đơn vị Kiểm tra một lớp có 2 biến thành viên riêng bên trong nó. Tôi đã tạo một lớp kế thừa từ lớp tôi đang thử nghiệm.Phản ánh trong ứng dụng Windows 8
Lúc đầu, tôi chỉ thực hiện các biến mà tôi muốn truy cập protected
nhưng tôi nghĩ sẽ rất tuyệt nếu tôi có thể giữ riêng tư và sử dụng phản chiếu để truy cập chúng. Tôi đã tìm kiếm và tìm thấy nhiều bài viết khác nhau (& câu hỏi được yêu cầu tại đây (http://stackoverflow.com/questions/4097682/c-sharp-use-reflection-to-get-a-private-member-variable-from-a-derived -class)) và các câu trả lời được chấp nhận không hoạt động.
Các liên kết SO câu hỏi nói:
// _commandCollection is an instance, private member
BindingFlags flags = BindingFlags.Instance | BindingFlags.NonPublic;
// Retrieve a FieldInfo instance corresponding to the field
FieldInfo field = GetType().GetField("_commandCollection", flags);
// Retrieve the value of the field, and cast as necessary
IDbCommand[] cc =(IDbCommand[])field.GetValue(this);
Tuy nhiên, không có phương pháp GetField()
. Tôi đã thử một phương pháp tương tự, GetRuntimeField()
nhưng phương pháp đó không hoạt động.
Mã của tôi (trong lớp kế thừa) là:
public List<BaseData> RealAllData
{
get
{
// Use reflection to access the private variable
FieldInfo field = GetType().GetRuntimeField("mAllData");
return (List<BaseData>)field.GetValue(this);
}
}
Nếu có ai biết tại sao điều này không làm việc thì tôi sẽ biết ơn. Cảm ơn.
Đây có phải là khu vực [Phản ánh trong Khuôn khổ .NET dành cho Ứng dụng Windows Store] (http://msdn.microsoft.com/) en-us/library/hh535795.aspx) là tất cả về, hoặc là một cái gì đó khác nhau? – AakashM
Vâng, các bài viết đó đã giúp tôi bắt đầu. Cảm ơn – Luke