extrahieren Sie den Attributnamen aus dem Lambda -Expression
Bei Verwendung des Lambda -Ausdrucks unter Verwendung des Namens des Passionsattributs kann das Abrufen des tatsächlichen Attributnamens eine Herausforderung sein. Es gibt jedoch einige Möglichkeiten, diese Informationen effektiv zu extrahieren.
Die anfängliche Implementierung umfasste den konvertierenden Lambda -Ausdruck in einen Mitgliederausdruck unter der Annahme, dass das Attribut eine Zeichenfolge ist. Dies gilt jedoch nur für die String -Attribute.
Um dieses Problem zu lösen, ist eine umfassendere Methode erforderlich, die gleichzeitig String- und Nicht -String -Attribute verarbeiten kann. Die folgende Methode liefert eine Lösung:
public static PropertyInfo GetPropertyInfo<TSource, TProperty>(
TSource source,
Expression<Func<TSource, TProperty>> propertyLambda)
Nach dem Login kopieren
Diese Methode akzeptiert Quellobjekte und Lambda -Ausdrücke als Eingabe und gibt das Eigenschafts -Objekt zurück, das die Zugriffsattribute angibt. Wenn der Ausdruck das Attribut nicht zitiert, verursacht dies Abnormalitäten.
in der Implementierung der Methode:
Es prüft, ob der Text des Lambda -Ausdrucks memberexpression ist und ob das Mitglied PropertyInfo ist. Wenn die Erkrankung nicht erfüllt ist, verursacht sie Abnormalitäten. -
Der Reflexionstyp des Attributs ist mit dem Quellentyp übereinstimmt oder ob es sich um eine Unterklasse des Quellentyps handelt. Wenn nicht, verursacht es Anomalien. -
Mit dieser Methode können Sie das Eigenschaftsobjekt aus dem Lambda -Ausdruck sicher abrufen, um sicherzustellen, dass die Attribute der Befragten korrekt sind und im Zielobjekt existieren.
Das obige ist der detaillierte Inhalt vonWie kann ich einen Eigenschaftsnamen aus einem Lambda -Ausdruck in C#abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!