Mit Liste der Objekte:C# erhalten Eigenschaft mit bestimmten Attribut aus der Liste Objekte
List<ConfigurationObjectBase> ObjectRegistry;
unter Attribut und einige der oben genannten Objekte mit diesem Attribut versehen:
[AttributeUsage(AttributeTargets.Property, Inherited = true, AllowMultiple = true)]
public sealed class PropertyCanHaveReference : Attribute
{
public PropertyCanHaveReference(Type valueType)
{
this.ValueType = valueType;
}
public Type ValueType { get; set; }
}
Nun, ich möchte um alle Objekte zu finden, deren Eigenschaft mit diesem Attribut versehen ist.
Code unten Probieren, scheint ich tue, falsch:
List<ConfigurationObjectBase> tmplist = ObjectRegistry.Where(o => (o.GetType().GetProperties().Where(p => p.GetCustomAttributes(typeof(PropertyCanHaveReference), true).Length > 0)));
Vielen Dank für Ihre Zeit.
Sollte nicht die zweite 'Where' sein' Any'? –
Auf den ersten Blick scheint Ihr Code richtig zu sein (obwohl Sie vielleicht bei den Konventionen bleiben und die Attributklasse 'PropertyCanHaveReferenceAttribute' aufrufen). Was geht eigentlich "falsch"? Erhalten Sie Fehlermeldungen oder keine Ergebnisse, wo Sie welche erwarten würden? Bitte geben Sie Beispielobjekte an, die nicht funktionieren oder ein [minimales, vollständiges und verifizierbares Beispiel] (http://stackoverflow.com/help/mcve) –