Tôi có một lớp học có nguồn gốc từ một lớp trừu tượng. Bắt một loại của một lớp dẫn xuất tôi muốn tìm ra các thuộc tính được thừa kế từ lớp trừu tượng và được khai báo trong lớp dẫn xuất.Làm thế nào để tìm hiểu xem tài sản được thừa kế từ một lớp cơ sở hoặc khai báo trong nguồn gốc?
public abstract class BaseMsClass
{
public string CommonParam { get; set; }
}
public class MsClass : BaseMsClass
{
public string Id { get; set; }
public string Name { get; set; }
public MsClass()
{ }
}
var msClass = new MsClass
{
Id = "1122",
Name = "Some name",
CommonParam = "param of the base class"
};
Vì vậy, tôi muốn nhanh chóng tìm ra rằng CommonParam là tham số được thừa hưởng và Id, Tên là thông số được khai báo trong MsClass. Bất kỳ đề xuất?
Cố gắng để sử dụng tuyên bố chỉ cờ trả tôi trống rỗng PropertyInfo mảng
Type type = msClass.GetType();
type.GetProperties(System.Reflection.BindingFlags.DeclaredOnly)
-->{System.Reflection.PropertyInfo[0]}
Tuy nhiên, GetProperties() trả về tất cả các đặc tính của hệ thống phân cấp thừa kế.
type.GetProperties()
-->{System.Reflection.PropertyInfo[3]}
-->[0]: {System.String Id}
-->[1]: {System.String Name}
-->[2]: {System.String CommonParam}
Tôi có bỏ lỡ điều gì đó không?
Bằng cách nào đó phương pháp này không mang lại kết quả mong đợi. Câu hỏi được cập nhật. – Maxim
@Maxim bạn cần 'type.GetProperties (BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public)'. +1 cho Reed, hy vọng anh ấy sẽ cập nhật câu trả lời một chút –
@Maxim Đã thêm một số mã ... –