国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

每個.NET開發(fā)都應(yīng)掌握的C#特性(Attribute)知識點

這篇具有很好參考價值的文章主要介紹了每個.NET開發(fā)都應(yīng)掌握的C#特性(Attribute)知識點。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

上篇文章講述了C#反射知識點,本文將介紹C#特性(Attribute)的知識點。C#特性(Attribute)是一種強大的元數(shù)據(jù)機制,用于為代碼元素(如類、方法、屬性等)添加信息,以影響它們的行為或提供額外的信息。本文將介紹C#特性每個.NET開發(fā)都應(yīng)熟悉的知識點,希望對大家開發(fā)有一定的幫助。

1、特性的基本概念

公共語言運行時使你能夠添加類似于關(guān)鍵字的描述性聲明(稱為特性),以便批注編程元素(如類型、字段、方法和屬性),它是以方括號([])的形式附加到代碼元素上,并可包含參數(shù)。特性的定義通常是通過創(chuàng)建一個繼承自System.Attribute的自定義類來實現(xiàn)的。下面是一個簡單的特性定義示例,是.NET默認(rèn)創(chuàng)建最小api的官方示例:

??[HttpGet(Name?=?"GetWeatherForecast")]//特性
  public IEnumerable<WeatherForecast> Get()
  {
      return Enumerable.Range(1, 5).Select(index => new WeatherForecast
      {
          Date = DateOnly.FromDateTime(DateTime.Now.AddDays(index)),
          TemperatureC = Random.Shared.Next(-20, 55),
          Summary = Summaries[Random.Shared.Next(Summaries.Length)]
      })
      .ToArray();
  }

以上特性是http的Get請求特性,對外的鏈接名稱是GetWeatherForecast。

詳解-->C#-特性(Attribute)

2、內(nèi)置特性的示例

C#默認(rèn)提供了一些內(nèi)置特性,例如[Obsolete]、[Serializable]和[Conditional]等。這樣以便.NET開發(fā)很方便處理基本特定的邏輯任務(wù)。

[Obsolete] 特性:[Obsolete]特性用于標(biāo)記已過時的代碼。它可以接受一個可選的消息參數(shù),用于提供有關(guān)為何該代碼已過時的信息。

[Serializable] 特性:[Serializable]特性用于標(biāo)記一個類可以序列化,以便將對象轉(zhuǎn)換為字節(jié)流。例如:

[Serializable]
public class SerializableClass
{
    // 類的成員
}

3、自定義特性

當(dāng)然大家也可以自定義特性,以滿足項目的特定需求。通常自定義特征需要繼承Attribute類,并在類上面加AttributeUsage特性,然后在這下面處理需要的邏輯,具體看之前我的一篇自定義特性的文章.NET特性(Attribute)簡單自定義。下面是自定義了一個顯示作者等信息的特性。

[AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)]
public class AuthorInfoAttribute : Attribute
{
    public string Author { get; }
    public string Version { get; }


    public AuthorInfoAttribute(string author, string version)
    {
        Author = author;
        Version = version;
    }
}
//使用特性
[AuthorInfo("DotNet開發(fā)跳槽",?"1.0")]
public class MyAwesomeClass
{
    // 類的成員
}

4、特性的應(yīng)用場景

那么特性通常用在什么地方呢?

特性在.NET生態(tài)系統(tǒng)中有多種應(yīng)用場景,比如代碼文檔的生成;代碼分析和驗證,比如屬性的Name字段長度驗證等;可以依賴注入;最最重要的是可以實現(xiàn)AOP(面向切面編程),比如可以用于日志記錄和性能監(jiān)控等。

5、 特性的運行時和編譯時用法

特性在C#中既具有運行時用途,通過反射機制可以在程序運行時動態(tài)檢查和操作已應(yīng)用特性的代碼元素,又具有編譯時用途,可在編譯時影響編譯器的行為,例如條件編譯、代碼生成和靜態(tài)分析,從而為開發(fā)者提供了在代碼的不同階段(編譯和運行時)對代碼進(jìn)行元數(shù)據(jù)標(biāo)記和定制的靈活性和功能。

6、特性的屬性訪問

通過反射,您可以訪問已應(yīng)用于代碼元素的特性及其參數(shù)。在上篇介紹反射(C#反射知識點)的文章已經(jīng)有所介紹。下面演示如何檢查并獲取類上的自定義特性信息。

Type type = typeof(MyAwesomeClass);
var?attributes?=?type.GetCustomAttributes(typeof(AuthorInfoAttribute),?false);
if (attributes.Length > 0 && attributes[0] is AuthorInfoAttribute authorInfo)
{
    Console.WriteLine($"作者: {authorInfo.Author}, 版本號: {authorInfo.Version}");
}
//上面的代碼將打印MyAwesomeClass類的特性,展示出特性屬性的作者和版本號。

結(jié)語

本文講述了C#特性的一些知識點,比如自定義特性、內(nèi)置特性、獲取特性內(nèi)容等,這些知識點都是.NET開發(fā)應(yīng)該掌握的。

希望本文提供的C#特性知識對每個.NET開發(fā)者都有所幫助,對于C#特性的知識點,你還知道哪些?歡迎留言討論或者吐槽本文。

參考:

1、微軟官網(wǎng):

learn.microsoft.com/zh-cn/dotnet/csharp/language-reference/language-specification/attributes

2、AI查詢

**推薦閱讀

1、.NET無處不在的特性(Attribute)1-探究

2、.NET無處不在的特性(Attribute)2-簡單自定義

3、面試必備:聊聊C#特性(Attribute)文章來源地址http://www.zghlxwxcb.cn/news/detail-710668.html

來源公眾號:DotNet開發(fā)跳槽??

到了這里,關(guān)于每個.NET開發(fā)都應(yīng)掌握的C#特性(Attribute)知識點的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 每個.NET開發(fā)都應(yīng)掌握的C#異常處理知識點

    上篇文章講述了C#集合知識點,本文將介紹C#異常處理知識點。異常處理是.NET開發(fā)中至關(guān)重要的一部分,它允許開發(fā)者在程序出現(xiàn)錯誤或不正常情況時采取適當(dāng)?shù)拇胧?,從而提高?yīng)用程序的穩(wěn)定性和可靠性。本文將介紹C#異常處理知識點,異常的基本概念略過,請查看官網(wǎng)。

    2024年02月08日
    瀏覽(24)
  • 每個.NET開發(fā)都應(yīng)掌握C#泛型的知識點

    C#泛型編程是.NET framework 2.0的新特征,它提高了代碼安全性和代碼重用的問題。由于泛型必須指定類型,正確的使用可以避免了裝箱拆箱的問題;使用了泛型后,可以將算法或組件泛型化,基于類型參數(shù)支持任意數(shù)據(jù)類型,從而提高了代碼的重用性。 C#泛型編程在C#是很重要的特

    2024年02月15日
    瀏覽(19)
  • 每個.NET開發(fā)都應(yīng)掌握的C#處理文件系統(tǒng)I/O知識點

    上篇文章講述了C#多線程知識點,本文將介紹C#處理文件的知識點。在.NET開發(fā)領(lǐng)域,文件系統(tǒng)I/O是一個至關(guān)重要的主題,尤其是在處理文件、目錄和數(shù)據(jù)存儲方面。C#作為.NET平臺的主要編程語言,提供了豐富而強大的文件系統(tǒng)I/O功能,為開發(fā)人員提供了靈活的工具,使其能夠

    2024年02月05日
    瀏覽(20)
  • 每個.NET開發(fā)都應(yīng)掌握的linq知識點

    LINQ是C#3.0引入的特性,讓處理對象就像執(zhí)行SQL語句一樣簡單,對于提高C#開發(fā)效率有革命性的作用。?對于每個.NET開發(fā)者來說,掌握C#的LINQ知識點是非常重要的。LINQ是C#的一個強大的特性,它為數(shù)據(jù)查詢和操作提供了簡潔、統(tǒng)一的語法,使得數(shù)據(jù)處理變得更加直觀和靈活。 以

    2024年02月14日
    瀏覽(21)
  • 重要!每個開發(fā)者都應(yīng)該掌握的9個核心算法

    許多開發(fā)者似乎都有一個很大的誤解,認(rèn)為算法在編程工作中沒什么用處,只是工作面試中的加分項。其實并不是這樣的,成為一名有秀的開發(fā)者,極其重要的是具備算法思維能力。不僅能夠復(fù)制和修改標(biāo)準(zhǔn)算法,還能夠使用代碼運用算法解決遇到的任何問題。 這里介紹9種

    2024年02月11日
    瀏覽(21)
  • .NET Core反射獲取帶有自定義特性的類,通過依賴注入根據(jù)Attribute元數(shù)據(jù)信息調(diào)用對應(yīng)的方法

    .NET Core反射獲取帶有自定義特性的類,通過依賴注入根據(jù)Attribute元數(shù)據(jù)信息調(diào)用對應(yīng)的方法

    前段時間有朋友問道一個這樣的問題,.NET Core中如何通過Attribute的元數(shù)據(jù)信息來調(diào)用標(biāo)記的對應(yīng)方法。我第一時間想到的就是通過C#反射獲取帶有Custom Attribute標(biāo)記的類,然后通過依賴注入(DI)的方式獲取對應(yīng)服務(wù)的方法并通過反射動態(tài)執(zhí)行類的方法,從而實現(xiàn)更靈活的編程

    2023年04月15日
    瀏覽(31)
  • 每個.NET開發(fā)都應(yīng)該知道的10個.NET庫

    有個.NET面試官反饋面試了一個小白,問他用過哪些.NET庫,結(jié)果只回答上了幾個。作為一個.NET開發(fā)者,了解一些常用的.NET庫是非常重要的。本文將介紹.NET開發(fā)人員應(yīng)該了解的10個常用.NET庫,這些庫可以幫助開發(fā)人員提高開發(fā)效率、簡化開發(fā)流程,開發(fā)出優(yōu)秀的.NET應(yīng)用程序。

    2024年02月06日
    瀏覽(16)
  • 量化開發(fā)必掌握的30個知識點【什么是Level-2數(shù)據(jù)】

    量化開發(fā)必掌握的30個知識點【什么是Level-2數(shù)據(jù)】

    在許多游戲中,戰(zhàn)爭迷霧/視野是非常重要的一個元素,通過掌握對手動向,隱藏己方意圖,實現(xiàn)“知己知彼,百戰(zhàn)不殆”。在證券市場中,Level-2行情數(shù)據(jù)有著異曲同工之妙。 通常我們使用手機炒股的時候,會有這樣的提示信息: 買9上有7890掛單?為啥我只能看到買5? Leve

    2024年02月02日
    瀏覽(29)
  • 開啟JDK 11時代,掌握這些新特性,成為Java開發(fā)高手!

    開啟JDK 11時代,掌握這些新特性,成為Java開發(fā)高手!

    大家好,我是小米,歡迎來到小米科技資訊公眾號!今天我將為大家詳細(xì)介紹 JDK 11 的一些新特性。JDK 11 是 Java 語言的一個重要版本,它帶來了許多令人振奮的改進(jìn)和功能,尤其是在電商應(yīng)用領(lǐng)域。讓我們一起來了解吧! JDK 11 引入了全新的 HTTP 客戶端 API,取代了過時的 Ht

    2024年02月11日
    瀏覽(19)
  • .NET5從零基礎(chǔ)到精通:全面掌握.NET5開發(fā)技能

    .NET5從零基礎(chǔ)到精通:全面掌握.NET5開發(fā)技能

    C#版本新語法-官網(wǎng): C#7:https://docs.microsoft.com/zh-cn/dotnet/csharp/whats-new/csharp-7 C#8:https://docs.microsoft.com/zh-cn/dotnet/csharp/whats-new/csharp-8 C#9:https://docs.microsoft.com/zh-cn/dotnet/csharp/whats-new/csharp-9 章節(jié) 第一章:https://www.cnblogs.com/kimiliucn/p/17613434.html 第二章:https://www.cnblogs.com/kimiliucn/p

    2024年02月14日
    瀏覽(47)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包