2 Stimmen

C# Wie kann ich den Wert einer Eigenschaft in einer PropertyCollection extrahieren?

Wie kann ich den Wert einer Eigenschaft in einer PropertyCollection extrahieren?

Wenn ich die "Eigenschaften" in der Zeile unter der visuellen Studie aufdringe, kann ich den Wert sehen, aber wie lese ich ihn?

foreach (string propertyName in result.Properties.PropertyNames)
{
  MessageBox.Show(ProperyNames[0].Value.ToString()); <--Wrong!
}

1 Stimmen

Was ist die Art des "Ergebnisses"? Für welche Eigenschaft in Eigenschaften benötigen Sie den Wert?

3voto

Mit Hilfe einiger Hinweise von oben gelang es mir, mit dem nachstehenden Code zu bekommen, was ich brauchte:

   ResultPropertyValueCollection values = result.Properties[propertyName];
    if (propertyName == "abctest")
    { 
      MessageBox.Show(values[0].ToString());
    }

Vielen Dank an alle.

2voto

Joel Coehoorn Punkte 377088

Versuchen Sie dies:

foreach (string propertyName in result.Properties.PropertyNames)
{
    MessageBox.Show(result.Properties[propertyName].ToString());
}

Oder dies:

foreach (object prop in result.Properties)
{
     MessageBox.Show(prop.ToString());
}

Außerdem gibt es eine Reihe verschiedener PropertyCollections-Klassen im Framework. Diese Beispiele basieren auf der Klasse System.Data, aber Sie könnten auch die Klasse System.DirectoryServices verwenden. Keine dieser Klassen ist jedoch wirklich eine "Reflection". Reflection bezieht sich auf etwas anderes - nämlich auf den System.Reflection-Namensraum und einige spezielle Operatoren.

0 Stimmen

Ich brauchte einen Index nach dem Eigenschaftsnamen, d.h. result.Properties[Eigenschaftsname][0].ToString()

0voto

dove Punkte 20015

Müssen Eigenschaftsnamen in der Funktion großgeschrieben werden?

Beim erneuten Lesen muss ich zugeben, dass ich ein wenig verwirrt bin, was genau Sie mit all diesen Eigenschaften bezwecken wollen. Ist dies die Klasse Eigenschaft Wert oder eine Instanz, die Sie nach sind?

0voto

Die PropertyNames ist nicht in Großbuchstaben anderswo, der Code unten funktioniert und würde den Namen der Eigenschaft zeigen, aber ich möchte den Wert zu lesen. PropertyName" ist nur eine Zeichenfolge.

foreach (string propertyName in result.Properties.PropertyNames)
{
  MessageBox.Show(PropertyName.ToString());
}

0voto

Stu Mackellar Punkte 11402

Ich bin mir nicht sicher, wonach Sie fragen, aber ich denke, das Problem ist, dass Sie die Eigenschaftsnamen statt ihrer Werte sehen?

Wenn ja, ist der Grund, dass Sie durch die PropertyCollection.PropertyNames-Sammlung und nicht die PropertyCollection.Values-Sammlung aufzählen. Versuchen Sie stattdessen etwas wie dies:

foreach (object value in result.Properties.Values)
{  
    MessageBox.Show(property.ToString());
}

Ich nahm an, dass sich diese Frage auf die Klasse System.DirectoryServices.PropertyCollection und nicht auf System.Data.PropertyCollection bezog, da der Verweis auf PropertyNames erfolgte, aber jetzt bin ich mir nicht mehr so sicher. Wenn sich die Frage auf die System.Data-Version bezieht, dann ignorieren Sie diese Antwort.

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