Sdílet prostřednictvím


Běžné atributy (C# and Visual Basic)

Toto téma popisuje atributy, které se nejčastěji používají v C# a Visual Basic.

  • Globální atributy

  • Zastaralé atribut

  • Atribut Conditional

  • Atributy volající Info

  • Atributy jazyka Visual Basic

Globální atributy

Většina atributy se aplikují na specifických prvků jazyka jako třídy nebo metody; Některé atributy jsou však globální, vztahují se na celé sestavení nebo modulu.Například AssemblyVersionAttribute atribut lze vložit informace o verzi do sestavení, například takto:

[assembly: AssemblyVersion("1.0.0.0")]
<Assembly: AssemblyVersion("1.0.0.0")>

Globální atributy se zobrazí ve zdrojovém kódu po libovolné nejvyšší úrovně using směrnic (Imports v jazyce Visual Basic) a před všemi deklaracemi typu, modulu nebo oboru názvů.Globální atributy se mohou objevit v více zdrojových souborů, ale musí být kompilován soubory v jedné kompilace průchodu.Pro projekty jazyka Visual Basic globální atributy budou obecně do souboru AssemblyInfo.vb, který je automaticky vytvořen s Visual Basic projekty.V jazyce C# projekty jsou vloženy v souboru AssemblyInfo.cs.

Atributy sestavení jsou hodnoty, které poskytují informace o sestavení.Jsou rozděleny do následujících kategorií:

  • Atributy identity sestavení

  • Informační atributy

  • Atributy manifestu sestavení

  • Atributy silného názvu

Atributy identity sestavení

Tři atributy (se silným názvem, popřípadě) zjistit identitu sestavení: název, verze a kultury.Tyto atributy tvoří úplný název sestavení a jsou vyžadovány při odkazu kód.Můžete nastavit sestavení verze a kultura pomocí atributů.Je však nastavena hodnota název kompilátorem, Visual Studio IDE v Dialogové okno Informace o sestavení, nebo na soubor, který obsahuje manifestu sestavení Assembly Linker (program Al.exe) při sestavení.AssemblyFlagsAttribute Atribut určuje, zda mohou společně existovat více kopií sestavení.

V následující tabulce jsou uvedeny atributy identity.

Atribut

Účel

AssemblyName

Popisuje plně identity sestavení.

AssemblyVersionAttribute

Určuje verzi sestavení.

AssemblyCultureAttribute

Určuje, který podporuje sestavení kultur.

AssemblyFlagsAttribute

Určuje, zda sestavení podporuje spuštění vedle sebe ve stejném počítači, ve stejném procesu, nebo stejné aplikační domény.

Informační atributy

Informační atributy lze použít k poskytnutí dodatečných informací o společnosti či produktu danému sestavení.Následující tabulka zobrazuje informační atributy definované v System.Reflection oboru názvů.

Atribut

Účel

AssemblyProductAttribute

Definuje vlastní atribut, který určuje název produktu manifestu sestavení.

AssemblyTrademarkAttribute

Definuje vlastní atribut, který určuje ochranná známka pro manifestu sestavení.

AssemblyInformationalVersionAttribute

Definuje vlastní atribut, který určuje verze aplikace informační pro manifestu sestavení.

AssemblyCompanyAttribute

Definuje vlastní atribut, který určuje název společnosti pro manifestu sestavení.

AssemblyCopyrightAttribute

Definuje vlastní atribut, který určuje autorská práva pro manifestu sestavení.

AssemblyFileVersionAttribute

Nastaví číslo konkrétní verzi použít prostředek systému Win32 soubor verze kompilátoru.

CLSCompliantAttribute

Označuje, zda je kompatibilní s společný jazyk specifikace (CLS) sestavení.

Atributy manifestu sestavení

Můžete poskytnout informace v manifestu sestavení atributy manifestu sestavení.To zahrnuje název, popis, výchozí alias a konfigurace.Následující tabulka zobrazuje atributy manifestu sestavení definované v System.Reflection oboru názvů.

Atribut

Účel

AssemblyTitleAttribute

Definuje vlastní atribut, který určuje název sestavení manifestu sestavení.

AssemblyDescriptionAttribute

Definuje vlastní atribut, který určuje popis sestavení manifestu sestavení.

AssemblyConfigurationAttribute

Definuje vlastní atribut, který určuje konfiguraci služby sestavení (například prodejní nebo ladění) pro manifestu sestavení.

AssemblyDefaultAliasAttribute

Určuje popisný výchozí alias pro manifest sestavení

Atributy silného názvu

V předchozích verzích aplikace Visual Studio pomocí silných názvů podepisování sestavení bylo provedeno s těmito atributy na úrovni sestavení:

To je nadále podporována, ale je preferovaný způsob podepisování sestavení použít Podepisování stránky v Návrháři projektu.Další informace naleznete v tématu Stránka Podepisování, návrhář projektu (C#) a Jak: podepsat sestavení (Visual Studio).

Zastaralé atribut

Obsolete Atribut označí program subjekt jako jeden, který je již není vhodné používat.Každé použití entity označena jako zastaralá bude následně generovat upozornění nebo Chyba v závislosti na konfiguraci atributu.Příklad:

    <System.Obsolete("use class B")> 
    Class A
        Sub Method()
        End Sub 
    End Class 

    Class B
        <System.Obsolete("use NewMethod", True)> 
        Sub OldMethod()
        End Sub 

        Sub NewMethod()
        End Sub 
    End Class
[System.Obsolete("use class B")]
class A
{
    public void Method() { }
}
class B
{
    [System.Obsolete("use NewMethod", true)]
    public void OldMethod() { }
    public void NewMethod() { }
}

V tomto příkladu Obsolete u atributu class A a metoda B.OldMethod.Protože druhý argument konstruktoru atribut použitý pro B.OldMethod je nastavena na true, tato metoda způsobí chybu kompilátoru, vzhledem k tomu, že použití třídy A bude pouze produkty upozornění.Volání B.NewMethod, vytváří však žádné upozornění nebo chyba.

Zobrazí se řetězec jako první argument konstruktoru atribut jako součást upozornění nebo chyba.Například při použití s předchozí definice, následující kód vygeneruje dva varování a jednu chybu:

' Generates 2 warnings: 
' Dim a As New A 
' Generate no errors or warnings: 

Dim b As New B
b.NewMethod()

' Generates an error, terminating compilation: 
' b.OldMethod()
// Generates 2 warnings: 
// A a = new A(); 

// Generate no errors or warnings:
B b = new B();
b.NewMethod();

// Generates an error, terminating compilation: 
// b.OldMethod();

Dvě upozornění pro třídu A jsou generovány: jeden pro prohlášení o odkaz na třídu a jeden pro konstruktor třídy.

Obsolete Atribut lze použít bez argumentů, ale zboží včetně vysvětlení, proč je zastaralá a místo použití je doporučeno.

Obsolete Atributu je atribut jedno použití a lze použít jakýkoli subjekt, který umožňuje atributy.Obsoleteje alias ObsoleteAttribute.

Atribut Conditional

Conditional Atribut umožňuje spuštění metody závislé na předzpracování identifikátor.Conditional Je alias pro atribut ConditionalAttributea lze je použít metodu nebo o třídu atributu.

V tomto příkladu Conditional je použita metoda povolení nebo zakázání zobrazení diagnostických informací specifických pro program:

#Const TRACE_ON = True 
Imports System
Imports System.Diagnostics
Module TestConditionalAttribute
    Public Class Trace
        <Conditional("TRACE_ON")> 
        Public Shared Sub Msg(ByVal msg As String)
            Console.WriteLine(msg)
        End Sub 

    End Class 

    Sub Main()
        Trace.Msg("Now in Main...")
        Console.WriteLine("Done.")
    End Sub 
End Module
#define TRACE_ON
using System;
using System.Diagnostics;

public class Trace
{
    [Conditional("TRACE_ON")]
    public static void Msg(string msg)
    {
        Console.WriteLine(msg);
    }
}

public class ProgramClass
{
    static void Main()
    {
        Trace.Msg("Now in Main...");
        Console.WriteLine("Done.");
    }
}

Pokud TRACE_ON identifikátor není definována, bude zobrazen žádný výstup.

Conditional Atribut je používán DEBUG identifikátor povolit trasování a funkce protokolování ladění, ale není ve verzi sestavení, tímto způsobem:

<Conditional("DEBUG")> 
Shared Sub DebugMethod()

End Sub
[Conditional("DEBUG")]
static void DebugMethod()
{
}

Při volání metody označena jako podmíněné přítomnosti nebo nepřítomnosti určeného symbolu předzpracování určuje zahrnuty nebo vynechány volání.Pokud je definován symbol, volání je zahrnut; jinak je vynechán volání.Pomocí Conditional je Čistič, alternativní elegantnější a méně náchylnému k uzavření metody uvnitř #if…#endif bloky takto:

#If DEBUG Then 
    Sub ConditionalMethod()
    End Sub
#End If
#if DEBUG
    void ConditionalMethod()
    {
    }
#endif

Podmíněné metoda musí být metodu ve třídě nebo struktuře prohlášení a nesmí mít hodnotu vrácení.

Použití více identifikátorů

Pokud metoda má více Conditional atributy, volání metody je zahrnuta, pokud je definována nejméně jedna symboly podmíněné (jinými slovy, symboly jsou logicky spojeny operátorem OR).V tomto příkladu přítomnost buď A nebo B výsledkem volání metody:

<Conditional("A"), Conditional("B")> 
Shared Sub DoIfAorB()

End Sub
[Conditional("A"), Conditional("B")]
static void DoIfAorB()
{
    // ...
}

Chcete-li dosáhnout logicky propojení symbolů pomocí operátoru AND, můžete definovat sériové podmíněné metody.Například pod druhou metodu bude proveden pouze v případě obou A a B jsou definovány:

<Conditional("A")> 
Shared Sub DoIfA()
    DoIfAandB()
End Sub

<Conditional("B")> 
Shared Sub DoIfAandB()
    ' Code to execute when both A and B are defined... 
End Sub
[Conditional("A")]
static void DoIfA()
{
    DoIfAandB();
}

[Conditional("B")]
static void DoIfAandB()
{
    // Code to execute when both A and B are defined...
}

Pomocí podmíněného atribut třídy.

Conditional Atribut lze použít také k definici atributu třídy.V tomto příkladu vlastní atribut Documentation bude přidat pouze informace k metadatům ladění je definována.

<Conditional("DEBUG")> 
Public Class Documentation
    Inherits System.Attribute
    Private text As String 
    Sub New(ByVal doc_text As String)
        text = doc_text
    End Sub 
End Class 

Class SampleClass
    ' This attribute will only be included if DEBUG is defined.
    <Documentation("This method displays an integer.")> 
    Shared Sub DoWork(ByVal i As Integer)
        System.Console.WriteLine(i)
    End Sub 
End Class
[Conditional("DEBUG")]
public class Documentation : System.Attribute
{
    string text;

    public Documentation(string text)
    {
        this.text = text;
    }
}

class SampleClass
{
    // This attribute will only be included if DEBUG is defined.
    [Documentation("This method displays an integer.")]
    static void DoWork(int i)
    {
        System.Console.WriteLine(i.ToString());
    }
}

Atributy volající Info

Pomocí atributů volající Info lze získat informace o volající metodu.Můžete získat cestu k souboru zdrojový kód, číslo řádku v zdrojový kód a název člena volajícího.

Chcete-li získat informace volajícího členské použijete atributy, které jsou použity volitelné parametry.Každý volitelný parametr určuje výchozí hodnotu.Následující tabulka obsahuje informace o volajícím atributy, které jsou definovány v System.Runtime.CompilerServices oboru názvů:

Atribut

Description

Type

CallerFilePathAttribute

Úplná cesta zdrojového souboru, který obsahuje volajícího.Toto je cesta v době kompilace.

String

CallerLineNumberAttribute

Číslo řádku ve zdrojovém souboru, ze kterého je volána metoda.

Integer

CallerMemberNameAttribute

Název metody nebo vlastnosti název volajícího.Další informace naleznete v tématu Informace o volajícím (C# and Visual Basic).

String

Další informace o atributech volající Info viz Informace o volajícím (C# and Visual Basic).

Atributy jazyka Visual Basic

V následující tabulce jsou uvedeny atributy, které jsou specifické pro aplikaci Visual Basic.

Atribut

Účel

ComClassAttribute

Kompilátoru označuje, že třída by měly být vystaveny jako objekt COM.

HideModuleNameAttribute

Umožňuje přistupovat pouze kvalifikace potřebné pro modul modul členů.

VBFixedStringAttribute

Určuje velikost řetězec pevné délky struktury pro použití souboru vstupní a výstupní funkce.

VBFixedArrayAttribute

Určuje velikost pole o pevné struktury pro použití souboru vstupní a výstupní funkce.

COMClassAttribute

Použití COMClassAttribute zjednodušit proces vytváření komponent modelu COM z Visual Basic.Objekty modelu COM jsou značně odlišné od .NET Framework sestavení a bez COMClassAttribute, je nutné postupovat počet kroků k vytvoření objektu COM z Visual Basic.Pro třídy označeny COMClassAttribute, kompilátor provádí řadu tyto kroky automaticky.

HideModuleNameAttribute

Použití HideModuleNameAttribute umožníte členům modul je přístupný pouze kvalifikace potřebné pro modul.

VBFixedStringAttribute

Použití VBFixedStringAttribute k Visual Basic vytvořit řetězec pevné délky.Proměnné délky ve výchozím nastavení jsou řetězce a tento atribut je užitečné při ukládání souborů řetězce.Následující kód ukazuje toto:

Structure Worker
    ' The runtime uses VBFixedString to determine  
    ' if the field should be written out as a fixed size.
    <VBFixedString(10)> Public LastName As String
    <VBFixedString(7)> Public Title As String
    <VBFixedString(2)> Public Rank As String 
End Structure

VBFixedArrayAttribute

Použití VBFixedArrayAttribute prohlásit pole, které mají pevnou velikost.Jako Visual Basic řetězce pole jsou ve výchozím nastavení proměnné délky.Tento atribut je užitečné při serializaci nebo zápisu dat do souborů.

Viz také

Referenční dokumentace

Reflexe (C# and Visual Basic)

Přístup k atributům pomocí reflexe (C# and Visual Basic)

System.Reflection

Attribute

Koncepty

Průvodce programováním v C#

Další zdroje

Příručka k programování v jazyce Visual Basic

Rozšiřování metadat pomocí atributů