Teknologian jakaminen

C# 3 tapaa saada attribuutin displayName

2024-07-08

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina


Lisää kuvan kuvaus tähän


C#:ssa ominaisuuden displayName saaminen voidaan suorittaa useilla tavoilla, mukaan lukien attribuuttien, heijastuksen ja LINQ:n avulla. Alla näytän jokaisen menetelmän erikseen ja annan erityisen esimerkkikoodin.

1. Suora pääsy attribuuttien avulla

Kun määrität ominaisuutta, voit määrittää ominaisuuden näyttönimen DisplayName-attribuutilla. Tämä menetelmä on yksinkertaisin ja suorin, ja se sopii tilanteisiin, joissa näyttönimi on määritettävä attribuuttia suunniteltaessa.

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特性已经被附加到属性上

Huomautus: .NET Coressa DisplayName-attribuutti on ehkä vanhentunut, ja sinun on ehkä käytettävä DisplayAttributea.

2. Käytä GetCustomAttribute()-metodia saadaksesi sen heijastuksen kautta

Heijastuksen avulla voit dynaamisesti hankkia mukautettuja määritteitä määritteille, mukaan lukien 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;
}

3. Tee kysely LINQ:lla

Jos sinulla on luettelo ominaisuuksista ja haluat etsiä ominaisuuksia tietyllä näyttönimellä, voit yksinkertaistaa kyselyprosessia LINQ:n avulla.

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;
    }
}

Yhteenveto ja vertailu

1. Suora pääsy attribuuttien avulla: Yksinkertaisin tapa on lisätä vain DisplayName-attribuutti määritteeseen. Tämä menetelmä määrittää näyttönimen jo määritettä määritettäessä, eikä se vaadi lisäkyselyitä suorituksen aikana.

2. Käytä GetCustomAttribute()-menetelmää saadaksesi pohdinnan kautta: Hanki DisplayAttribute-attribuutti attribuutissa heijastuksen kautta. Tämä menetelmä hankkii attribuuttitiedot dynaamisesti ajon aikana ja on joustavampi, mutta suorituskyvyn lisäkustannukset ovat hieman korkeammat kuin ominaisuuksien suoran käytön.

3. Käytä LINQ-kyselyä: Tee kysely ominaisuuksien luettelosta LINQ:n kautta löytääksesi ominaisuuksia tietyllä näyttönimellä. Tämä menetelmä soveltuu suodatukseen, kun attribuutteja on paljon, mutta se voi olla liian monimutkainen, eikä se ole paras valinta yksinkertaisiin skenaarioihin.

Jokaisella menetelmällä on soveltuvat skenaariot. Varsinaisessa kehittämisessä sopivin menetelmä tulisi valita erityistarpeiden ja suorituskysymysten perusteella. Jos ominaisuuksia on vähän ja näyttönimi tiedetään määrittelyhetkellä, attribuuttien käyttö on yksinkertaisin ja yksinkertaisin tapa. Jos attribuuttitiedot on hankittava dynaamisesti tai attribuutteja on monia, voi olla tarkoituksenmukaisempaa käyttää reflektiota tai LINQ:ta.