Tôi đang cố gắng sử dụng sự phản chiếu để có được một tài sản từ một lớp học. Dưới đây là một số mẫu mã của những gì tôi đang nhìn thấy:Tại sao GetProperty không tìm thấy?
using System.Reflection;
namespace ConsoleApplication
{
class Program
{
static void Main(string[] args)
{
PropertyInfo[] tmp2 = typeof(TestClass).GetProperties();
PropertyInfo test = typeof(TestClass).GetProperty(
"TestProp", BindingFlags.Public | BindingFlags.NonPublic);
}
}
public class TestClass
{
public Int32 TestProp
{
get;
set;
}
}
}
Khi tôi theo dõi qua chuyện này, đây là những gì tôi thấy:
- Khi tôi lấy tất cả các đặc tính sử dụng
GetProperties()
, mảng kết quả có một mục nhập, cho thuộc tínhTestProp
. - Khi tôi cố gắng tìm nạp
TestProp
bằng cách sử dụngGetProperty()
, tôi lấy lại giá trị rỗng.
Tôi hơi bối rối; Tôi đã không thể tìm thấy bất cứ điều gì trong MSDN liên quan đến GetProperty()
để giải thích kết quả này cho tôi. Bất kỳ giúp đỡ?
EDIT:
Nếu tôi thêm BindingFlags.Instance
đến GetProperties()
cuộc gọi, không có tài sản được tìm thấy, thời kỳ. Điều này là phù hợp hơn, và dẫn tôi tin rằng TestProp
không được coi là một tài sản dụ cho một số lý do.
Tại sao lại như vậy? Tôi cần phải làm gì với lớp học để tài sản này được coi là một tài sản cá thể?
Nếu tôi làm điều đó, GetProperties trả về không có gì là tốt, mà là phù hợp , ít nhất. Nhưng câu hỏi đặt ra là: tôi cần phải làm gì để tìm tài sản với GetProperty? Tại sao TestProp không được coi là một thuộc tính Instance? –
... hoặc tôi cần làm gì với lớp TestClass để thuộc tính của nó xuất hiện dưới dạng thuộc tính thể hiện? –
Tôi không thể sao chép vấn đề của bạn (mặc dù tôi đang sử dụng VS2005, vì vậy tôi đã phải xác thịt ra tài sản của bạn với một thực hiện). –