Ho un'istanza di System.Type che rappresenta un'interfaccia e voglio ottenere un elenco di tutte le proprietà su quell'interfaccia, comprese quelle ereditate dalle interfacce di base. Fondamentalmente voglio lo stesso comportamento delle interfacce che ottengo per le classi.Riflette su tutte le proprietà di un'interfaccia, incluse quelle ereditate?
Ad esempio, dato questa gerarchia:
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"; } }
}
Se chiamo GetProperties sulla classe - typeof(Sub).GetProperties()
- poi mi sia BaseProperty e sottoproprietà. Voglio fare la stessa cosa con l'interfaccia, ma quando lo provo - typeof(ISub).GetProperties()
- tutto ciò che ritorna è SubProperty.
Ho provato a passare BindingFlags.Instance | BindingFlags.Public | BindingFlags.FlattenHierarchy
a GetProperties, poiché la mia comprensione di FlattenHierarchy è che si suppone che includa membri di classi base, ma il comportamento era esattamente lo stesso.
Suppongo che potrei iterare Type.GetInterfaces()
e chiamare GetProperties su ciascuno di essi, ma poi mi sarebbe affidamento su GetProperties su un'interfaccia per mai proprietà di base di ritorno (in quanto se mai lo ha fatto, mi piacerebbe ottenere i duplicati). Preferirei non fare affidamento su questo comportamento senza almeno vederlo documentato.
come posso neanche:
- ottenere un elenco di tutte le proprietà su un'interfaccia, compresi quelli provenienti da sue interfacce di base? O
- Almeno confida che quello che sto vedendo è un comportamento documentato su cui posso contare, quindi posso aggirarlo?
possibile duplicato di [GetProperties() per restituire tutte le proprietà per una gerarchia di ereditarietà dell'interfaccia] (http://stackoverflow.com/questions/358835/getproperties-to-return-all-properties-for-an-interface-inheritance -lierarchia) – nawfal