2 Stimmen

Gibt es eine Möglichkeit, für Eigenschaften einer Klasse für einen bestimmten Wert in c# überprüfen

Ich habe eine Lizenzklasse, die 50 boolesche Eigenschaften und einige Zeitstempel-Eigenschaften enthält. Ich möchte den Benutzer informieren, wenn alle diese 50 Eigenschaften falsch sind.

Eine Möglichkeit ist, 50 wenn und wenn conditions.other Weg ist Reflexion, die Overkill für diese Sache scheint zu verwenden. Bitte schlagen Sie einen anderen Weg vor. Ich verwende .Net Framework 3.5

3voto

Jon Skeet Punkte 1325502

Sie könnten dies sicherlich mit Reflexion tun:

var values = from prop in typeof(License).GetProperties()
             where prop.PropertyType == typeof(bool)
             select (bool) prop.GetValue(instance, null);

if (!values.Any(x => x))
{
    // Nope, everything's false
}

Ich bin mir nicht sicher, was Sie mit den Zeitstempel-Eigenschaften machen wollen...

1voto

Filip Ekberg Punkte 35716

Können Sie die Struktur der Klasse ändern?

In diesem Fall, wenn die booleschen Werte irgendwie verbunden sind, können Sie Folgendes verwenden:

Und um die Werte zu überprüfen, verwenden Sie einfach eine for o foreach Schleife.

Außerdem ist die Reflexion Ihr Freund.

0voto

James Punkte 77534

Sie sollten sich eine Indiziertes Eigentum . Sie könnten die Prüfung in eine schreibgeschützte Eigenschaft von License kapseln:

private List<Boolean> props;

public bool IsExpired
{
    get { return !props.Any(p => p); }
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X