Udostępnij za pośrednictwem


Atrybuty wspólnych (C# i Visual Basic)

W tym temacie opisano atrybuty, które są najczęściej używane w C# i Visual Basic programy.

  • Atrybuty globalne

  • Atrybut przestarzałe

  • Atrybut Conditional

  • Atrybuty Info rozmówcy

  • Atrybuty języka Visual Basic

Atrybuty globalne

Większość atrybutów są stosowane do określonych elementów języka, takie jak klasy lub metod; Jednakże niektóre atrybuty są globalne — dotyczą całego zestawu lub modułu.Na przykład AssemblyVersionAttribute atrybut może służyć do osadzania informacji dotyczących wersji w zestawie, jak to:

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

Atrybuty globalne pojawiają się w kodzie źródłowym po dowolnym najwyższego poziomu using dyrektyw (Imports w języku Visual Basic), a przed wszelkich deklaracji typu, moduł lub obszaru nazw.Atrybuty globalne mogą pojawiać się w wielu plików źródłowych, ale pliki muszą zostać zgromadzone w przebiegu kompilacji pojedynczej.Dla projektów programu Visual Basic atrybuty globalnego zazwyczaj są umieszczane w pliku AssemblyInfo.vb, który jest tworzony automatycznie przy Visual Basic projektów.W języku C# projektów są umieszczane w pliku AssemblyInfo.cs.

Atrybuty zestawu wartości, które zawierają informacje dotyczące asemblowania.One dzielą się na następujące kategorie:

  • Atrybuty tożsamości zestawu

  • Atrybuty informacyjna

  • Atrybuty manifestu zestawu

  • Atrybuty silnej nazwy

z371wyft.collapse_all(pl-pl,VS.110).gifAtrybuty tożsamości zestawu

Trzy atrybuty (przy użyciu silnej nazwy, jeśli ma zastosowanie) określić tożsamości zestawu: name, version i kultury.Atrybuty te tworzą pełną nazwę zestawu i są wymagane, gdy można się odwoływać w kodzie.Można ustawić wersję zestawu i kultura przy użyciu atrybutów.Jednakże wartość nazwy jest ustawiana przez kompilator, Visual Studio IDE w Okno dialogowe informacje o montażu, lub Assembly Linker (program Al.exe) podczas tworzenia zestawu oparty na pliku, który zawiera manifestu zestawu.AssemblyFlagsAttribute Atrybut określa, czy wiele kopii tego zestawu mogą współistnieć.

W poniższej tabeli przedstawiono atrybuty tożsamości.

Atrybut

Cel

AssemblyName

W pełni opisuje tożsamości zestawu.

AssemblyVersionAttribute

Określa wersję zestawu.

AssemblyCultureAttribute

Określa, które kultury obsługuje zestawu.

AssemblyFlagsAttribute

Określa, czy zespół wspomaga wykonanie side-by-side na tym samym komputerze, w tym samym procesie lub w tej samej domeny aplikacji.

z371wyft.collapse_all(pl-pl,VS.110).gifAtrybuty informacyjna

Za pomocą atrybutów informacyjna firmy dodatkowe lub informacje o produkcie dla asemblowania.W poniższej tabeli przedstawiono atrybuty informacyjna, zdefiniowane w System.Reflection obszaru nazw.

Atrybut

Cel

AssemblyProductAttribute

Definiuje niestandardowy atrybut, który określa nazwę produktu dla manifest zestawu.

AssemblyTrademarkAttribute

Definiuje niestandardowy atrybut, który określa znak towarowy dla manifest zestawu.

AssemblyInformationalVersionAttribute

Definiuje niestandardowy atrybut, który określa wersję informacyjna dla manifest zestawu.

AssemblyCompanyAttribute

Definiuje niestandardowy atrybut, który określa nazwę firmy dla manifest zestawu.

AssemblyCopyrightAttribute

Definiuje niestandardowy atrybut, który określa prawa autorskiego dla manifest zestawu.

AssemblyFileVersionAttribute

Nakazuje kompilatorowi użyć liczby określonej wersji dla zasobu wersji pliku Win32.

CLSCompliantAttribute

Wskazuje, czy zgromadzenie jest zgodny z wspólnych specyfikacji języka (CLS).

z371wyft.collapse_all(pl-pl,VS.110).gifAtrybuty manifestu zestawu

Atrybuty manifestu zestawu można użyć do dostarczania informacji w manifeście zestawu.Obejmuje to tytuł, opis, domyślny alias i konfiguracji.W poniższej tabeli przedstawiono atrybuty manifestu zestawu zdefiniowane w System.Reflection obszaru nazw.

Atrybut

Cel

AssemblyTitleAttribute

Definiuje niestandardowy atrybut, który określa tytuł zestawu manifestu zestawu.

AssemblyDescriptionAttribute

Definiuje niestandardowy atrybut, który określa opis zestawu manifest zestawu.

AssemblyConfigurationAttribute

Definiuje niestandardowy atrybut, który określa instalacji zestawu (takich jak detaliczne lub debugowania) manifest zestawu.

AssemblyDefaultAliasAttribute

Definiuje alias domyślne przyjazne dla manifestu zestawu

z371wyft.collapse_all(pl-pl,VS.110).gifAtrybuty silnej nazwy

W poprzednich wersjach programu Visual Studio podpisywanie zestawów przy użyciu silnej nazwy została wykonana z tych atrybutów poziom zestawu:

To jest nadal obsługiwane, ale preferowanym sposobem podpisania zestawów jest użycie Podpisywanie stronę w programie Project Designer.Zobacz Podpisywanie strony, Projektant projektu i Jak: podpisywanie zestawu (Visual Studio) Aby uzyskać więcej informacji.

Atrybut przestarzałe

Obsolete Atrybutu oznacza podmiot program jako jeden, który już jest zalecany do użytku.Następnie będzie generować każdego zastosowania jednostka oznaczony jako przestarzały, ostrzeżenie lub błąd, w zależności od sposobu skonfigurowania atrybutu.Na przykład:

    <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() { }
}

W tym przykładzie Obsolete atrybut jest stosowany do klasy A i do metody B.OldMethod.Ponieważ w odniesieniu do drugiego argumentu Konstruktor atrybutu B.OldMethod jest ustawiona na true, ta metoda spowoduje błąd kompilatora, należy za pomocą klasy A będzie produktu po prostu ostrzeżenie.Wywołanie B.NewMethod, jednak daje nie ostrzeżeń lub błędów.

Ciąg, pod warunkiem jako pierwszy argument do konstruktora atrybut będą wyświetlane jako część ostrzeżeń lub błędów.Na przykład podczas jej używać z poprzednich definicje, poniższy kod generuje dwa ostrzeżenia i jeden błąd:

' 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();

Dwa ostrzeżenia dla klasy A są generowane: jeden dla deklaracji odwołania klasy, a drugi dla konstruktora klasy.

Obsolete Atrybut może być używany bez argumentów, ale tym wyjaśnienie, dlaczego element jest przestarzały i co Użyj zamiast tego zaleca się.

Obsolete Atrybutu jest atrybutem jednorazowego użytku i mogą być stosowane do każdego podmiotu, który umożliwia atrybuty.Obsoletejest aliasem dla ObsoleteAttribute.

Atrybut Conditional

Conditional Atrybut powoduje, że wykonanie metody są zależne od identyfikatora wstępnego przetwarzania.Conditional Atrybut jest aliasem dla ConditionalAttributei mogą być stosowane do metody lub klasie atrybutu.

W tym przykładzie Conditional jest stosowane do metody, aby włączyć lub wyłączyć wyświetlanie informacji diagnostycznych określonych programów:


#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.");
    }
}

Jeśli TRACE_ON identyfikator nie jest zdefiniowana, będą wyświetlane nie dane śledzenia.

Conditional Atrybut jest często używany z DEBUG identyfikator, aby włączyć śledzenie, a funkcje rejestrowania debugowania buduje, ale nie w wersji buduje, podobnie do następującej:

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

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

Gdy wywoływana jest metoda oznaczona jako warunkowy, obecności lub braku określonego symbolu wstępne przetwarzanie Określa, czy włączone jest wywołanie, lub jest pominięty.Jeśli symbol jest zdefiniowana, wywołanie jest włączone; w przeciwnym razie wywołanie zostanie pominięty.Przy użyciu Conditional jest lepszy i bardziej elegancki i mniej podatne alternatywę wobec zakrywające metod wewnątrz #if…#endif bloków, jak to:

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

Warunkowe metoda musi być metodą w deklaracji klasy lub struktury i nie może mieć wartości zwracanej.

z371wyft.collapse_all(pl-pl,VS.110).gifZa pomocą wielu identyfikatorów

Jeśli metoda ma wiele Conditional atrybuty, wywołanie metody jest włączone, jeśli co najmniej jeden z symboli warunkowe jest zdefiniowany (innymi słowy, symbole są logicznie połączone ze sobą za pomocą operatora OR).W tym przykładzie, albo na obecność A lub B spowoduje wywołanie metody:

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

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

Aby osiągnąć efekt logicznie łączenia symbole za pomocą operatora AND, można zdefiniować szeregowego metody warunkowe.Na przykład, druga metoda poniżej zostanie wykonany tylko wtedy, gdy oba A i B są zdefiniowane:

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

z371wyft.collapse_all(pl-pl,VS.110).gifAtrybut klasy przy użyciu warunkowe

Conditional Również można zastosować atrybutu do definicji klasy atrybutu.W tym przykładzie niestandardowy atrybut Documentation tylko spowoduje dodanie informacji do metadanych Jeśli debugowanie jest zdefiniowana.

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

Atrybuty Info rozmówcy

Za pomocą atrybutów Info wywołującego, można uzyskać informacje o wywołującego metodę.Można uzyskać ścieżki pliku kodu źródłowego, numer wiersza kodu źródłowego i nazwa elementu członkowskiego wywołującego.

Aby uzyskać informacje o członkach wywołującego, używasz atrybuty, które są stosowane do parametrów opcjonalnych.Każdy parametr opcjonalny określa wartość domyślną.W poniższej tabeli przedstawiono atrybuty wywołującego informacje, które są zdefiniowane w System.Runtime.CompilerServices obszaru nazw:

Atrybut

Opis

Typ

CallerFilePathAttribute

Pełna ścieżka pliku źródłowego, która zawiera obiekt wywołujący.Jest to ścieżka w czasie kompilacji.

String

CallerLineNumberAttribute

Numer wiersza w pliku źródłowym, z którego metoda jest wywoływana.

Integer

CallerMemberNameAttribute

Metoda nazwa lub nazwa właściwości obiektu wywołującego.Aby uzyskać więcej informacji, zobacz Informacje o wywołującym (C# i Visual Basic).

String

Aby uzyskać więcej informacji o atrybutach wywołującego informacje, zobacz Informacje o wywołującym (C# i Visual Basic).

Atrybuty języka Visual Basic

Poniższa tabela zawiera listę atrybutów, które są specyficzne dla języka Visual Basic.

Atrybut

Cel

ComClassAttribute

W kompilatorze wskazuje, że powinna być poddana ekspozycji jako obiekt COM klasy.

HideModuleNameAttribute

Pozwala członkom modułu można uzyskać dostęp przy użyciu tylko kwalifikacje wymagane dla modułu.

VBFixedStringAttribute

Określa rozmiar ciągu o stałej długości w strukturze do użytku z wejścia i wyjścia plików funkcji.

VBFixedArrayAttribute

Określa rozmiar tablicy stałych w strukturze do użytku z wejścia i wyjścia plików funkcji.

z371wyft.collapse_all(pl-pl,VS.110).gifCOMClassAttribute

Użyj COMClassAttribute w celu uproszczenia procesu tworzenia składników COM z Visual Basic.Obiekty COM znacznie różnią się od .NET Framework zespołów i bez COMClassAttribute, należy wykonać liczbę kroków, aby wygenerować obiektu COM z Visual Basic.Dla klasy, oznaczone COMClassAttribute, kompilator wykonuje wiele z tych kroków automatycznie.

z371wyft.collapse_all(pl-pl,VS.110).gifHideModuleNameAttribute

Użyj HideModuleNameAttribute Aby zezwolić członkom moduł, do których mają dostęp tylko do kwalifikacji, które są potrzebne dla modułu.

z371wyft.collapse_all(pl-pl,VS.110).gifVBFixedStringAttribute

Użyj VBFixedStringAttribute do wymuszenia Visual Basic , aby utworzyć ciąg znaków o stałej długości.Ciągi znaków są o zmiennej długości, domyślnie, a ten atrybut jest przydatny podczas przechowywania ciągów do plików.Poniższy kod demonstruje to:

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

z371wyft.collapse_all(pl-pl,VS.110).gifVBFixedArrayAttribute

Użyj VBFixedArrayAttribute do deklarować tablic, które zostały rozwiązane w rozmiarze.Podobnie jak Visual Basic ciągów, tablice są o zmiennej długości, domyślnie.Ten atrybut jest przydatny, gdy szeregowania lub zapisywania danych do plików.

Zobacz też

Informacje

Odbicie (C# i Visual Basic)

Dostęp do atrybutów przy użyciu odbicia (C# i Visual Basic)

System.Reflection

Attribute

Koncepcje

Podręcznik programowania C#

Inne zasoby

Podręcznik programowania Visual Basic

Rozszerzanie metadanych za pomocą atrybutów