Tôi có một thể hiện của System.Type đại diện cho một giao diện, và tôi muốn có được một danh sách tất cả các thuộc tính trên giao diện đó - bao gồm cả các thuộc tính được thừa kế từ các giao diện cơ bản. Về cơ bản tôi muốn có cùng một hành vi từ các giao diện mà tôi nhận được cho các lớp học.Phản ánh trên tất cả các thuộc tính của giao diện, bao gồm cả các thuộc tính được kế thừa?
Ví dụ, đưa ra hệ thống phân cấp này:
public interface IBase {
public string BaseProperty { get; }
}
public interface ISub : IBase {
public string SubProperty { get; }
}
public class Base : IBase {
public string BaseProperty { get { return "Base"; } }
}
public class Sub : Base, ISub {
public string SubProperty { get { return "Sub"; } }
}
Nếu tôi gọi GetProperties trên lớp - typeof(Sub).GetProperties()
- sau đó tôi nhận được cả hai BaseProperty và SubProperty. Tôi muốn làm điều tương tự với giao diện, nhưng khi tôi thử nó - typeof(ISub).GetProperties()
- tất cả những gì trở lại là SubProperty.
Tôi đã cố gắng vượt qua BindingFlags.Instance | BindingFlags.Public | BindingFlags.FlattenHierarchy
để GetProperties, vì sự hiểu biết của tôi về FlattenHierarchy là nó phải bao gồm các thành viên từ các lớp cơ sở, nhưng hành vi hoàn toàn giống nhau.
Tôi cho rằng tôi có thể lặp Type.GetInterfaces()
và gọi GetProperties trên mỗi một, nhưng sau đó tôi sẽ được dựa vào GetProperties trên một giao diện để bao giờ thuộc tính cơ bản trở lại (vì nếu nó bao giờ đã làm, tôi sẽ nhận được bản sao). Tôi không muốn dựa vào hành vi này mà không ít nhất là nhìn thấy nó được ghi lại.
Làm thế nào tôi có thể một trong hai:
- Nhận một danh sách tất cả các thuộc tính trên một giao diện, bao gồm cả những từ giao diện cơ bản của nó? Hoặc
- Ít nhất hãy tự tin rằng những gì tôi thấy là hành vi được ghi lại tài liệu mà tôi có thể dựa vào, vì vậy tôi có thể giải quyết nó?
có thể trùng lặp của [GetProperties() để trả về tất cả các thuộc tính cho một hệ thống phân cấp thừa kế giao diện] (http://stackoverflow.com/questions/358835/getproperties-to-return-all-properties-for-an-interface-inheritance -hierarchy) – nawfal