EnumMemberAttribute Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Określa, że pole jest elementem członkowskim wyliczenia i powinno być serializowane.
public ref class EnumMemberAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Field, AllowMultiple=false, Inherited=false)]
public sealed class EnumMemberAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Field, AllowMultiple=false, Inherited=false)>]
type EnumMemberAttribute = class
inherit Attribute
Public NotInheritable Class EnumMemberAttribute
Inherits Attribute
- Dziedziczenie
- Atrybuty
Przykłady
Poniższy przykład przedstawia EnumMemberAttribute zastosowanie do elementów członkowskich wyliczenia.
[DataContract]
public enum Position
{
[EnumMember(Value = "Emp")]
Employee,
[EnumMember(Value = "Mgr")]
Manager,
[EnumMember(Value = "Ctr")]
Contractor,
NotASerializableEnumeration
}
[DataContract]
public class Person : IExtensibleDataObject
{
public Person(string firstNameValue, string lastNameValue)
{
LastName = firstNameValue;
FirstName = lastNameValue;
}
private ExtensionDataObject extensioDataValue;
public ExtensionDataObject ExtensionData
{
get { return extensioDataValue; }
set { extensioDataValue = value; }
}
[DataMember]
internal string FirstName;
[DataMember]
internal string LastName;
[DataMember]
internal Position Description;
}
public sealed class Test
{
private Test() { }
static void Main()
{
try
{
Test t = new Test();
t.Serialize("Enum.xml");
Console.WriteLine("Done");
Console.ReadLine();
}
catch (SerializationException exc)
{
Console.WriteLine(exc.Message);
Console.ReadLine();
}
}
private void Serialize(string path)
{
Console.WriteLine("Serializing...");
Person p = new Person("Denise", "Smith");
p.Description = Position.Manager;
FileStream fs = new FileStream(path, FileMode.Create);
try
{
DataContractSerializer ser =
new DataContractSerializer(typeof(Person));
ser.WriteObject(fs, p);
Console.WriteLine("Done");
}
catch (SerializationException exc)
{
Console.WriteLine(exc.Message);
Console.WriteLine(exc.StackTrace);
}
finally
{
fs.Close();
}
}
}
<DataContract()> _
Public Enum Position
<EnumMember(Value:="Emp")> Employee
<EnumMember(Value:="Mgr")> Manager
<EnumMember(Value:="Ctr")> Contractor
NotASerializableEnumeration
End Enum
<DataContract()> _
Public Class Person
Implements IExtensibleDataObject
Public Sub New(ByVal firstNameValue As String, _
ByVal lastNameValue As String)
LastName = firstNameValue
FirstName = lastNameValue
End Sub
Private extensioDataValue As ExtensionDataObject
Public Property ExtensionData() As ExtensionDataObject _
Implements IExtensibleDataObject.ExtensionData
Get
Return extensioDataValue
End Get
Set
extensioDataValue = value
End Set
End Property
<DataMember()> _
Friend FirstName As String
<DataMember()> _
Friend LastName As String
<DataMember()> _
Friend Description As Position
End Class
NotInheritable Public Class Test
Private Sub New()
End Sub
Shared Sub Main()
WriteObject("Enum.xml")
Console.ReadLine()
End Sub
Shared Sub WriteObject(ByVal path As String)
Console.WriteLine("Writing...")
Dim p As New Person("Denise", "Smith")
p.Description = Position.Manager
Dim fs As New FileStream(path, FileMode.Create)
Try
Dim ser As New DataContractSerializer(GetType(Person))
ser.WriteObject(fs, p)
Console.WriteLine("Done")
Catch exc As SerializationException
Console.WriteLine(exc.Message)
Console.WriteLine(exc.StackTrace)
Finally
fs.Close()
End Try
End Sub
End Class
Uwagi
Funkcja EnumMemberAttribute umożliwia precyzyjną kontrolę nad nazwami wyliczenia w miarę ich serializacji.
Aby użyć EnumMemberAttributemetody , utwórz wyliczenie i zastosuj DataContractAttribute atrybut do wyliczenia. Następnie zastosuj EnumMemberAttribute atrybut do każdego elementu członkowskiego, który musi znajdować się w strumieniu serializacji.
Konstruktory
EnumMemberAttribute() |
Inicjuje nowe wystąpienie klasy EnumMemberAttribute. |
Właściwości
IsValueSetExplicitly |
Pobiera, czy Value element został jawnie ustawiony. |
TypeId |
Po zaimplementowaniu w klasie pochodnej pobiera unikatowy identyfikator dla tego elementu Attribute. (Odziedziczone po Attribute) |
Value |
Pobiera lub ustawia wartość skojarzona z elementem członkowskim wyliczenia, do których jest stosowany atrybut. |
Metody
Equals(Object) |
Zwraca wartość wskazującą, czy to wystąpienie jest równe podanemu obiektowi. (Odziedziczone po Attribute) |
GetHashCode() |
Zwraca wartość skrótu dla tego wystąpienia. (Odziedziczone po Attribute) |
GetType() |
Type Pobiera bieżące wystąpienie. (Odziedziczone po Object) |
IsDefaultAttribute() |
W przypadku zastąpienia w klasie pochodnej wskazuje, czy wartość tego wystąpienia jest wartością domyślną klasy pochodnej. (Odziedziczone po Attribute) |
Match(Object) |
W przypadku zastąpienia w klasie pochodnej zwraca wartość wskazującą, czy to wystąpienie jest równe określonemu obiektowi. (Odziedziczone po Attribute) |
MemberwiseClone() |
Tworzy płytkią kopię bieżącego Objectelementu . (Odziedziczone po Object) |
ToString() |
Zwraca ciąg reprezentujący bieżący obiekt. (Odziedziczone po Object) |
Jawne implementacje interfejsu
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Zestaw nazw jest mapowany na odpowiedni zestaw identyfikatorów wysyłania. (Odziedziczone po Attribute) |
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Pobiera informacje o typie obiektu, którego można użyć do pobrania informacji o typie interfejsu. (Odziedziczone po Attribute) |
_Attribute.GetTypeInfoCount(UInt32) |
Pobiera informację o liczbie typów interfejsów, jakie zawiera obiekt (0 lub 1). (Odziedziczone po Attribute) |
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Umożliwia dostęp do właściwości i metod udostępnianych przez obiekt. (Odziedziczone po Attribute) |