SoapEnumAttribute Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Controla como o XmlSerializer serializa um membro de enumeração.
public ref class SoapEnumAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Field)]
public class SoapEnumAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Field)>]
type SoapEnumAttribute = class
inherit Attribute
Public Class SoapEnumAttribute
Inherits Attribute
- Herança
- Atributos
Exemplos
O exemplo a seguir usa a XmlSerializer classe para serializar um nome Food
que inclui uma enumeração chamada FoodType
. A FoodType
enumeração é substituída criando uma SoapEnumAttribute para cada enumeração e definindo a SoapEnum propriedade de um SoapAttributes como SoapEnumAttribute. O SoapAttributes valor é adicionado a um SoapAttributeOverrides que é usado para criar um XmlSerializer.
#using <System.Xml.dll>
#using <System.dll>
using namespace System;
using namespace System::IO;
using namespace System::Xml;
using namespace System::Xml::Serialization;
public enum class GroupType
{
// Use the SoapEnumAttribute to instruct the XmlSerializer
// to generate Small and Large instead of A and B.
[SoapEnum("Small")]
A,
[SoapEnum("Large")]
B
};
public ref class Group
{
public:
String^ GroupName;
GroupType Grouptype;
};
public ref class Run
{
public:
void SerializeObject( String^ filename )
{
// Create an instance of the XmlSerializer Class.
XmlTypeMapping^ mapp = (gcnew SoapReflectionImporter)->ImportTypeMapping( Group::typeid );
XmlSerializer^ mySerializer = gcnew XmlSerializer( mapp );
// Writing the file requires a TextWriter.
TextWriter^ writer = gcnew StreamWriter( filename );
// Create an instance of the Class that will be serialized.
Group^ myGroup = gcnew Group;
// Set the Object* properties.
myGroup->GroupName = ".NET";
myGroup->Grouptype = GroupType::A;
// Serialize the Class, and close the TextWriter.
mySerializer->Serialize( writer, myGroup );
writer->Close();
}
void SerializeOverride( String^ fileName )
{
SoapAttributeOverrides^ soapOver = gcnew SoapAttributeOverrides;
SoapAttributes^ SoapAtts = gcnew SoapAttributes;
// Add a SoapEnumAttribute for the GroupType::A enumerator.
// Instead of 'A' it will be S"West".
SoapEnumAttribute^ soapEnum = gcnew SoapEnumAttribute( "West" );
// Override the S"A" enumerator.
SoapAtts->GroupType::SoapEnum = soapEnum;
soapOver->Add( GroupType::typeid, "A", SoapAtts );
// Add another SoapEnumAttribute for the GroupType::B enumerator.
// Instead of //B// it will be S"East".
SoapAtts = gcnew SoapAttributes;
soapEnum = gcnew SoapEnumAttribute;
soapEnum->Name = "East";
SoapAtts->GroupType::SoapEnum = soapEnum;
soapOver->Add( GroupType::typeid, "B", SoapAtts );
// Create an XmlSerializer used for overriding.
XmlTypeMapping^ map = (gcnew SoapReflectionImporter( soapOver ))->ImportTypeMapping( Group::typeid );
XmlSerializer^ ser = gcnew XmlSerializer( map );
Group^ myGroup = gcnew Group;
myGroup->GroupName = ".NET";
myGroup->Grouptype = GroupType::B;
// Writing the file requires a TextWriter.
TextWriter^ writer = gcnew StreamWriter( fileName );
ser->Serialize( writer, myGroup );
writer->Close();
}
};
int main()
{
Run^ test = gcnew Run;
test->SerializeObject( "SoapEnum.xml" );
test->SerializeOverride( "SoapOverride.xml" );
Console::WriteLine( "Fininished writing two files" );
}
using System;
using System.IO;
using System.Xml;
using System.Xml.Serialization;
public class Group{
public string GroupName;
public GroupType Grouptype;
}
public enum GroupType{
// Use the SoapEnumAttribute to instruct the XmlSerializer
// to generate Small and Large instead of A and B.
[SoapEnum("Small")]
A,
[SoapEnum("Large")]
B
}
public class Run {
static void Main(){
Run test= new Run();
test.SerializeObject("SoapEnum.xml");
test.SerializeOverride("SoapOverride.xml");
Console.WriteLine("Fininished writing two files");
}
private void SerializeObject(string filename){
// Create an instance of the XmlSerializer Class.
XmlTypeMapping mapp =
(new SoapReflectionImporter()).ImportTypeMapping(typeof(Group));
XmlSerializer mySerializer = new XmlSerializer(mapp);
// Writing the file requires a TextWriter.
TextWriter writer = new StreamWriter(filename);
// Create an instance of the Class that will be serialized.
Group myGroup = new Group();
// Set the object properties.
myGroup.GroupName = ".NET";
myGroup.Grouptype= GroupType.A;
// Serialize the Class, and close the TextWriter.
mySerializer.Serialize(writer, myGroup);
writer.Close();
}
private void SerializeOverride(string fileName){
SoapAttributeOverrides soapOver = new SoapAttributeOverrides();
SoapAttributes SoapAtts = new SoapAttributes();
// Add a SoapEnumAttribute for the GroupType.A enumerator.
// Instead of 'A' it will be "West".
SoapEnumAttribute soapEnum = new SoapEnumAttribute("West");
// Override the "A" enumerator.
SoapAtts.SoapEnum = soapEnum;
soapOver.Add(typeof(GroupType), "A", SoapAtts);
// Add another SoapEnumAttribute for the GroupType.B enumerator.
// Instead of //B// it will be "East".
SoapAtts= new SoapAttributes();
soapEnum = new SoapEnumAttribute();
soapEnum.Name = "East";
SoapAtts.SoapEnum = soapEnum;
soapOver.Add(typeof(GroupType), "B", SoapAtts);
// Create an XmlSerializer used for overriding.
XmlTypeMapping map =
new SoapReflectionImporter(soapOver).
ImportTypeMapping(typeof(Group));
XmlSerializer ser = new XmlSerializer(map);
Group myGroup = new Group();
myGroup.GroupName = ".NET";
myGroup.Grouptype = GroupType.B;
// Writing the file requires a TextWriter.
TextWriter writer = new StreamWriter(fileName);
ser.Serialize(writer, myGroup);
writer.Close();
}
}
Imports System.IO
Imports System.Xml
Imports System.Xml.Serialization
Public Class Group
Public GroupName As String
Public Grouptype As GroupType
End Class
Public enum GroupType
' Use the SoapEnumAttribute to instruct the XmlSerializer
' to generate Small and Large instead of A and B.
<SoapEnum("Small")> _
A
<SoapEnum("Large")> _
B
End enum
Public Class Run
Public Shared Sub Main()
Dim test As Run = new Run()
test.SerializeObject("SoapEnum.xml")
test.SerializeOverride("SoapOverride.xml")
Console.WriteLine("Fininished writing two files")
End Sub
Private Shared Sub SerializeObject(filename As string)
' Create an instance of the XmlSerializer Class.
Dim mapp As XmlTypeMapping = _
(New SoapReflectionImporter()).ImportTypeMapping(GetType(Group))
Dim mySerializer As XmlSerializer = New XmlSerializer(mapp)
' Writing the file requires a TextWriter.
Dim writer As TextWriter = New StreamWriter(filename)
' Create an instance of the Class that will be serialized.
Dim myGroup As Group = New Group()
' Set the object properties.
myGroup.GroupName = ".NET"
myGroup.Grouptype= GroupType.A
' Serialize the Class, and close the TextWriter.
mySerializer.Serialize(writer, myGroup)
writer.Close()
End Sub
Private Sub SerializeOverride(fileName As String)
Dim soapOver As SoapAttributeOverrides = new SoapAttributeOverrides()
Dim SoapAtts As SoapAttributes = new SoapAttributes()
' Add a SoapEnumAttribute for the GroupType.A enumerator. Instead
' of 'A' it will be "West".
Dim soapEnum As SoapEnumAttribute = new SoapEnumAttribute("West")
' Override the "A" enumerator.
SoapAtts.SoapEnum = soapEnum
soapOver.Add(GetType(GroupType), "A", SoapAtts)
' Add another SoapEnumAttribute for the GroupType.B enumerator.
' Instead of 'B' it will be "East".
SoapAtts= New SoapAttributes()
soapEnum = new SoapEnumAttribute()
soapEnum.Name = "East"
SoapAtts.SoapEnum = soapEnum
soapOver.Add(GetType(GroupType), "B", SoapAtts)
' Create an XmlSerializer used for overriding.
Dim map As XmlTypeMapping = New SoapReflectionImporter _
(soapOver).ImportTypeMapping(GetType(Group))
Dim ser As XmlSerializer = New XmlSerializer(map)
Dim myGroup As Group = New Group()
myGroup.GroupName = ".NET"
myGroup.Grouptype = GroupType.B
' Writing the file requires a TextWriter.
Dim writer As TextWriter = New StreamWriter(fileName)
ser.Serialize(writer, myGroup)
writer.Close
End Sub
End Class
Comentários
A SoapEnumAttribute classe pertence a uma família de atributos que controla como o XmlSerializer serializa ou desserializa um objeto como SOAP XML codificado. O XML resultante está em conformidade com a seção 5 do documento SOAP (Simple Object Access Protocol) 1.1 do World Wide Web Consortium. Para obter uma lista completa de atributos semelhantes, consulte Atributos que controlam a serialização SOAP codificada.
Para serializar um objeto como uma mensagem SOAP codificada, você deve construir o XmlSerializer uso de um XmlTypeMapping criado com o ImportTypeMapping método da SoapReflectionImporter classe.
Use a SoapEnumAttribute para alterar a enumeração que a XmlSerializer gera ou reconhece (quando serializa ou desserializa uma classe, respectivamente). Por exemplo, se uma enumeração contiver um membro nomeado One
, mas você preferir que a saída XML seja nomeada Single
, aplique o SoapEnumAttribute membro à enumeração e defina a Name propriedade como "Single".
Você pode substituir o Name valor da propriedade de um SoapEnumAttribute criando uma instância da SoapEnumAttribute classe e atribuindo-a SoapEnum à propriedade de um SoapAttributes. Para obter detalhes, confira a visão geral da SoapAttributeOverrides classe.
Para serializar um objeto como uma mensagem SOAP codificada, você deve construir o XmlSerializer uso de um XmlTypeMapping criado com o ImportTypeMapping método da SoapReflectionImporter classe.
Observação
Você pode usar a palavra SoapEnum
em seu código em vez de mais tempo SoapEnumAttribute.
Para obter mais informações sobre como usar atributos, consulte Atributos.
Construtores
SoapEnumAttribute() |
Inicializa uma nova instância da classe SoapEnumAttribute. |
SoapEnumAttribute(String) |
Inicializa uma nova instância da classe SoapEnumAttribute usando o nome do elemento especificado. |
Propriedades
Name |
Obtém ou define o valor gerado em um documento XML quando o XmlSerializer serializa uma enumeração ou o valor reconhecido quando ele desserializa o membro da enumeração. |
TypeId |
Quando implementado em uma classe derivada, obtém um identificador exclusivo para este Attribute. (Herdado de Attribute) |
Métodos
Equals(Object) |
Retorna um valor que indica se essa instância é igual a um objeto especificado. (Herdado de Attribute) |
GetHashCode() |
Retorna o código hash para a instância. (Herdado de Attribute) |
GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
IsDefaultAttribute() |
Quando substituído em uma classe derivada, indica se o valor dessa instância é o valor padrão para a classe derivada. (Herdado de Attribute) |
Match(Object) |
Quando substituído em uma classe derivada, retorna um valor que indica se essa instância é igual a um objeto especificado. (Herdado de Attribute) |
MemberwiseClone() |
Cria uma cópia superficial do Object atual. (Herdado de Object) |
ToString() |
Retorna uma cadeia de caracteres que representa o objeto atual. (Herdado de Object) |
Implantações explícitas de interface
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Mapeia um conjunto de nomes para um conjunto correspondente de identificadores de expedição. (Herdado de Attribute) |
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Recupera as informações de tipo para um objeto, que pode ser usado para obter as informações de tipo para uma interface. (Herdado de Attribute) |
_Attribute.GetTypeInfoCount(UInt32) |
Retorna o número de interfaces de informações do tipo que um objeto fornece (0 ou 1). (Herdado de Attribute) |
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Fornece acesso a propriedades e métodos expostos por um objeto. (Herdado de Attribute) |