τα στοιχεία επικοινωνίας μου
Ταχυδρομείο[email protected]
2024-07-08
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Στη C#, η λήψη του displayName μιας ιδιότητας μπορεί να επιτευχθεί με διάφορους τρόπους, συμπεριλαμβανομένης της χρήσης χαρακτηριστικών, ανάκλασης και LINQ. Παρακάτω θα δείξω κάθε μέθοδο ξεχωριστά και θα δώσω συγκεκριμένο παράδειγμα κώδικα.
Όταν ορίζετε μια ιδιότητα, μπορείτε να χρησιμοποιήσετε το χαρακτηριστικό DisplayName για να καθορίσετε το εμφανιζόμενο όνομα της ιδιότητας. Αυτή η μέθοδος είναι η απλούστερη και η πιο άμεση και είναι κατάλληλη για περιπτώσεις όπου το εμφανιζόμενο όνομα πρέπει να καθοριστεί όταν σχεδιάζεται το χαρακτηριστικό.
using System;
using System.ComponentModel;
public class MyModel
{
[DisplayName("Full Name")]
public string Name { get; set; }
}
// 使用
MyModel model = new MyModel();
string displayName = model.Name.DisplayName; // 假设DisplayName特性已经被附加到属性上
Σημείωση: Στο .NET Core, το χαρακτηριστικό DisplayName ενδέχεται να έχει καταργηθεί και ίσως χρειαστεί να χρησιμοποιήσετε το DisplayAttribute.
Μέσω της αντανάκλασης, μπορείτε να αποκτήσετε δυναμικά προσαρμοσμένα χαρακτηριστικά σε χαρακτηριστικά, συμπεριλαμβανομένου του DisplayAttribute.
using System;
using System.ComponentModel;
using System.Reflection;
public class MyModel
{
[Display(Name = "Full Name")]
public string Name { get; set; }
}
// 使用
MyModel model = new MyModel();
string displayName = "";
PropertyInfo propertyInfo = model.GetType().GetProperty("Name");
DisplayAttribute displayAttribute = (DisplayAttribute)propertyInfo.GetCustomAttribute(typeof(DisplayAttribute), false);
if (displayAttribute != null)
{
displayName = displayAttribute.Name;
}
Εάν έχετε μια λίστα ιδιοτήτων και θέλετε να κάνετε ερώτημα για ιδιότητες με συγκεκριμένο εμφανιζόμενο όνομα, μπορείτε να χρησιμοποιήσετε το LINQ για να απλοποιήσετε τη διαδικασία ερωτήματος.
using System;
using System.ComponentModel;
using System.Linq;
using System.Reflection;
public class MyModel
{
[Display(Name = "Full Name")]
public string Name { get; set; }
[Display(Name = "Date of Birth")]
public DateTime DateOfBirth { get; set; }
}
// 使用
MyModel model = new MyModel();
string displayName = "";
var attributes = from property in model.GetType().GetProperties()
let displayAttribute = Attribute.GetCustomAttribute(property, typeof(DisplayAttribute)) as DisplayAttribute
where displayAttribute != null
select displayAttribute;
foreach (var attribute in attributes)
{
if (attribute.Name == "Full Name")
{
displayName = attribute.Name;
break;
}
}
1. Άμεση πρόσβαση χρησιμοποιώντας χαρακτηριστικά: Ο απλούστερος τρόπος είναι απλώς να προσθέσετε το χαρακτηριστικό DisplayName στο χαρακτηριστικό. Αυτή η μέθοδος καθορίζει ήδη το εμφανιζόμενο όνομα όταν ορίζεται το χαρακτηριστικό και δεν απαιτεί πρόσθετα ερωτήματα κατά το χρόνο εκτέλεσης.
2. Χρησιμοποιήστε τη μέθοδο GetCustomAttribute() για να αποκτήσετε μέσω αναστοχασμού: Αποκτήστε το χαρακτηριστικό DisplayAttribute στο χαρακτηριστικό μέσω της ανάκλασης. Αυτή η μέθοδος λαμβάνει δυναμικά πληροφορίες χαρακτηριστικών κατά το χρόνο εκτέλεσης και είναι πιο ευέλικτη, αλλά η επιβάρυνση της απόδοσης είναι ελαφρώς υψηλότερη από την άμεση πρόσβαση σε λειτουργίες.
3. Χρησιμοποιήστε το ερώτημα LINQ: Ζητήστε μια λίστα ιδιοτήτων μέσω LINQ για να βρείτε ιδιότητες με συγκεκριμένο εμφανιζόμενο όνομα. Αυτή η μέθοδος είναι κατάλληλη για φιλτράρισμα όταν υπάρχει μεγάλος αριθμός χαρακτηριστικών, αλλά μπορεί να είναι πολύ περίπλοκη και δεν είναι η καλύτερη επιλογή για απλά σενάρια.
Κάθε μέθοδος έχει τα ισχύοντα σενάρια της. Στην πραγματική ανάπτυξη, η καταλληλότερη μέθοδος θα πρέπει να επιλέγεται με βάση συγκεκριμένες ανάγκες και εκτιμήσεις απόδοσης. Εάν υπάρχουν λίγες ιδιότητες και το εμφανιζόμενο όνομα είναι γνωστό κατά τον ορισμό, η χρήση χαρακτηριστικών είναι η απλούστερη και πιο απλή προσέγγιση. Εάν χρειάζεται να λάβετε πληροφορίες χαρακτηριστικών δυναμικά, ή εάν υπάρχουν πολλά χαρακτηριστικά, ίσως είναι πιο κατάλληλο να χρησιμοποιήσετε την ανάκλαση ή το LINQ.