Exportar (0) Imprimir
Expandir todo

Tipos de propiedades

Los objetos de directorio se utilizan con diversos tipos de propiedades. En el esquema de los servicios de dominio de Active Directory, estos tipos de propiedades se denominan sintaxis de atributo. Para obtener más información sobre la sintaxis de atributo, así como una lista de las sintaxis de atributo que se pueden utilizar en Active Directory Domain Services, vea el tema "Sintaxis de los atributos de Active Directory" en la biblioteca de MSDN en http://go.microsoft.com/fwlink/?LinkID=27252.

Tipos de datos interpretados

Hay dos maneras diferentes de recuperar valores de propiedades desde el espacio de nombres System.DirectoryServices. La primera consiste en utilizar los miembros de la propiedad Properties. La segunda consiste en usar los miembros de la colección ResultPropertyValueCollection que se obtienen con la clase DirectorySearcher. Cada uno devolverá objetos genéricos cuyo tipo de datos real depende del tipo de datos de esquema de la propiedad. La propiedad Properties devolverá el mismo tipo de objeto que el método IADs.GetInfoEx. (Para obtener más información sobre el método IADs.GetInfoEx, vea el tema "IADs::GetInfoEx" en la biblioteca de MSDN en http://go.microsoft.com/fwlink/?LinkID=27252). La propiedad Item convertirá algunos de los tipos de datos en tipos de datos de .NET Framework. En la siguiente tabla se muestra cómo los tipos de esquema de los servicios de dominio de Active Directory y sus tipos asociados interpretaron y anularon la interpretación de tipos de datos. Para obtener más información acerca de los tipos de esquema de Active Directory o los nombres de interfaz COM que aparecen en la tabla siguiente, vea el tema acerca de ese tipo o nombre de interfaz COM específico en la biblioteca de MSDN en http://go.microsoft.com/fwlink/?LinkID=27252.

Tipo de esquema de los servicios de dominio de Active Directory Tipo no interpretado (tal y como lo devolvió Properties) Tipo interpretado (tal y como lo devolvió ResultPropertyValueCollection)

Boolean

Boolean

Boolean

Enumeration

Int32

Int32

Enumeración (Delivery-Mechanism)

Int32

Int32

Enumeración (Export-Information-Level)

Int32

Int32

Enumeración (Preferred-Delivery-Method)

Int32

Int32

Entero

Int32

Int32

Interval

Objeto COM que se puede transformar en un IADsLargeInteger.

Int64

LargeInteger

Objeto COM que se puede transformar en un IADsLargeInteger.

Int64

Object(Access-Point)

No admitida

No admitida

Object(DN-Binary)

Objeto COM que se puede transformar en un IADsDNWithBinary.

String que contiene el nombre distintivo y los datos binarios en el formato especificado por Object(DN-Binary).

Object(DN-String)

Objeto COM que se puede transformar en un IADsDNWithString.

String que contiene el nombre distintivo y los datos de cadena en el formato especificado por Object(DN-String).

Object(DS-DN)

String

String

Object(OR-Name)

Objeto COM que se puede transformar en un IADsDNWithBinary.

String que contiene el nombre distintivo y los datos binarios en el formato especificado por Object(DN-Binary).

Object(Presentation-Address)

String

String

Object(Replica-Link)

Byte[]

Byte[]

String(Generalized-Time)

DateTime

DateTime

String(IA5)

String

String

String(NT-Sec-Desc)

Objeto COM que se puede transformar en un IADsSecurityDescriptor.

Byte[]

String(Numeric)

String

String

String(Object-Identifier)

String

String

String(Octet)

Byte[]

Byte[]

String(Printable)

String

String

String(Sid)

Byte[]

Byte[]

String(Teletex)

String

String

String(Unicode)

String

String

String(UTC-Time)

DateTime

DateTime

Interpretar valores de propiedades de objetos ADSI

En el caso de algunos tipos de sintaxis de Active Directory, como LargeInteger, System.DirectoryServices devolverá el valor de la propiedad en forma de objeto COM. Este objeto COM se debe transformar en el tipo ADSI correcto para obtener el tipo de propiedad real. Por ejemplo, la propiedad lastLogon pertenece a la sintaxis Interval. System.DirectoryServices devolverá el valor de propiedad de una sintaxis Interval en forma de objeto COM compatible con la interfaz IADsLargeInteger. Para obtener más información sobre estos elementos, vea los temas "LargeInteger", "Interval", "IADsLargeInteger" y "lastLogon" en la biblioteca de MSDN en http://go.microsoft.com/fwlink/?LinkID=27252.

En el siguiente ejemplo de C# se muestra cómo obtener la interfaz IADsLargeInteger del objeto COM convirtiendo el objeto COM en un objeto ActiveDs.IADsLargeInteger. Si va a desarrollar una aplicación que utiliza objetos del espacio de nombres ActiveDS, establezca una referencia a la biblioteca de tipos ActiveDS, activeds.tlb, cuando compile y vincule la aplicación.

object obj = entry.Properties["lastLogon"];
ActiveDs.IADsLargeInteger largeIntADSI;
largeIntADSI = (ActiveDs.IADsLargeInteger)obj;

En la siguiente tabla se enumeran los tipos de sintaxis que devolverá System.DirectoryServices en forma de objetos COM y las interfaces ADSI asociadas a cada tipo de sintaxis. Para obtener información acerca de los tipos de sintaxis o las interfaces ADSI que aparezcan en la tabla siguiente, vea el tema acerca de ese tipo concreto de sintaxis o interfaz ADSI en la biblioteca de MSDN en http://go.microsoft.com/fwlink/?LinkID=27252.

Tipo de sintaxis Interfaz ADSI

Interval

IADsLargeInteger

LargeInteger

IADsLargeInteger

Object(DN-Binary)

IADsDNWithBinary

Object(DN-String)

IADsDNWithString

Object(OR-Name)

IADsDNWithBinary

String(NT-Sec-Desc)

IADsSecurityDescriptor

En el siguiente ejemplo de C# se muestra cómo obtener la interfaz correspondiente para un objeto COM ADSI. En este ejemplo se utiliza la excepción InvalidCastException para determinar si la transformación es válida.

static string GetADSIComObjectValue(object obj)
{
    if(obj.GetType().Name.Equals("__ComObject"))
    {
        /*
        Try IADsSecurityDescriptor. This is returned for the following AD 
        syntax type:

        String(NT-Sec-Desc) 
        */
        try
        {
            ActiveDs.IADsSecurityDescriptor secDesc;
            secDesc = (ActiveDs.IADsSecurityDescriptor)obj;
            return "IADsSecurityDescriptor:" + secDesc.Owner.ToString();
        }
        catch (System.InvalidCastException)
        {
        }

        /*
        Try IADsLargeInteger. This is returned for the following AD syntax 
        types:
        
        Interval
        LargeInteger
        */
        try
        {
            ActiveDs.IADsLargeInteger largeIntADSI;
            largeIntADSI = (ActiveDs.IADsLargeInteger)obj;
            Int64 largeInt = largeIntADSI.HighPart * 0x100000000;
            largeInt += largeIntADSI.LowPart;
            return "IADsLargeInteger:" + largeInt.ToString();
        }
        catch (System.InvalidCastException)
        {
        }

        /*
        Try IADsDNWithBinary. This is returned for the following AD syntax 
        types:
        
        Object(DN-Binary)
        Object(OR-Name)
        */
        try
        {
            ActiveDs.IADsDNWithBinary dnWithBinary;
            dnWithBinary = (ActiveDs.IADsDNWithBinary)obj;
            return "IADsDNWithBinary:" + 
                dnWithBinary.DNString + ":" + 
                dnWithBinary.BinaryValue.ToString();
        }
        catch (System.InvalidCastException)
        {
        }

        /*
        Try IADsDNWithString. This is returned for the following AD syntax 
        type:
        
        Object(DN-String)
        */
        try
        {
            ActiveDs.IADsDNWithString dnWithString;
            dnWithString = (ActiveDs.IADsDNWithString)obj;
            return "IADsDNWithString:" + 
                dnWithString.DNString + ":" + 
                dnWithString.StringValue;
        }
        catch (System.InvalidCastException)
        {
        }

        throw new System.ArgumentException("Unknown COM Object type.");
    }
    else
    {
        throw new System.ArgumentException("Object is not a COM Object.");
    }
}

Consulte también

Send comments about this topic to Microsoft.

Copyright © 2007 Microsoft Corporation. Reservados todos los derechos.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2015 Microsoft