Ich habe ein Objekt mit einer Sammlung von Eigenschaften. Wenn ich die spezifische Entität erhalte, kann ich das Feld sehen, nach dem ich suche (opportunityid
), und das ist Value
Attribut ist die Guid
für diese Gelegenheit. Dies ist der Wert, den ich will, aber es wird nicht immer für eine Gelegenheit sein, und deshalb kann ich nicht immer auf opportunityid
schauen, also muss ich das Feld basierend auf der vom Benutzer gelieferten Eingabe erhalten.Wie erhalten Sie den Wert einer Eigenschaft von PropertyInfo?
Mein Code so weit ist:
Guid attrGuid = new Guid();
BusinessEntityCollection members = CrmWebService.RetrieveMultiple(query);
if (members.BusinessEntities.Length > 0)
{
try
{
dynamic attr = members.BusinessEntities[0];
//Get collection of opportunity properties
System.Reflection.PropertyInfo[] Props = attr.GetType().GetProperties();
System.Reflection.PropertyInfo info = Props.FirstOrDefault(x => x.Name == GuidAttributeName);
attrGuid = info.PropertyType.GUID; //doesn't work.
}
catch (Exception ex)
{
throw new Exception("An error occurred when retrieving the value for " + attributeName + ". Error: " + ex.Message);
}
}
Die dynamische attr
enthält das Feld ich suche (in diesem Fall opportunityid
), die wiederum ein Wertfeld enthält, das die korrekte Guid
ist. Jedoch, wenn ich die PropertyInfo
Info (opportunityid
) bekomme, hat es kein Value
Attribut mehr. Ich habe versucht, die PropertyType.GUID
zu betrachten, aber dies gibt nicht die richtige Guid
zurück. Wie kann ich den Wert für diese Eigenschaft erhalten?
Schöne Erklärung! GetValue() hat einen zweiten Parameter, der jedoch null sein muss. – helb
Klingt wie, was ich brauche. Ich werde es einfach testen, um sicherzugehen, dass ich es verstehe. – sr28
Hmmm, ich bin mir sicher, dass diese Methode funktionieren würde, wenn ich sie verstehen würde. Ich bekomme jedoch eine Ausnahme, die besagt, dass CRMWebService.Key nicht in System.Guid konvertiert werden kann. Ich habe im Wesentlichen getan, attrGuid = (Guid) info.GetValue (attr, null); – sr28