Tengo una instancia de System.Type que representa una interfaz, y quiero obtener una lista de todas las propiedades en esa interfaz, incluidas las heredadas de las interfaces base. Básicamente quiero el mismo comportamiento de las interfaces que obtengo para las clases.¿Reflejando todas las propiedades de una interfaz, incluidas las heredadas?
Por ejemplo, dada esta jerarquía:
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"; } }
}
Si llamo GetProperties en la clase - typeof(Sub).GetProperties()
- entonces consigo tanto BaseProperty y subpropiedad. Quiero hacer lo mismo con la interfaz, pero cuando lo intento - typeof(ISub).GetProperties()
- todo lo que vuelve es SubProperty.
Intenté pasar BindingFlags.Instance | BindingFlags.Public | BindingFlags.FlattenHierarchy
a GetProperties, ya que mi comprensión de FlattenHierarchy es que se supone que debe incluir miembros de clases base, pero el comportamiento fue exactamente el mismo.
supongo que podría iterar Type.GetInterfaces()
y llame GetProperties en cada uno, pero entonces estaría confiando en GetProperties en una interfaz de nunca propiedades básicas de retorno (ya que si es que alguna vez lo hizo, me gustaría obtener duplicados). Prefiero no confiar en este comportamiento sin al menos verlo documentado.
¿Cómo puedo ya sea:
- obtener una lista de todas las propiedades de una interfaz, comprendidas las de sus interfaces base? O
- Al menos tenga la seguridad de que lo que estoy viendo es un comportamiento documentado en el que puedo confiar, así que puedo evitarlo.
posible duplicado de [GetProperties() para devolver todas las propiedades para una jerarquía de herencia de interfaz] (http://stackoverflow.com/questions/358835/getproperties-to-return-all-properties-for-an-interface-heriffitance -hierarchy) – nawfal