Compartir a través de


Clase de objeto y categoría de objeto

Cada instancia de una clase de objeto tiene una propiedad objectClass de varios valores que identifica la clase de la que el objeto es una instancia, así como todas las superclases estructurales o abstractas de las que se deriva esa clase. Por lo tanto, la propiedad objectClass de un objeto de usuario identificaría las clases top, person, organizationalPerson y user . La propiedad objectClass no incluye clases auxiliares en la lista. El sistema establece el valor objectClass cuando se crea la instancia de objeto y no se puede cambiar.

Cada instancia de una clase de objeto también tiene una propiedad objectCategory , que es una propiedad de un solo valor que contiene el nombre distintivo de la clase de la que el objeto es una instancia o una de sus superclases. Cuando se crea un objeto, el sistema establece su propiedad objectCategory en el valor especificado por la propiedad defaultObjectCategory de su clase de objeto. No se puede cambiar la propiedad objectCategory de un objeto.

Para obtener más información y un ejemplo de código que recupera la propiedad objectClass de un objeto, vea Recuperar el atributo objectClass.

Importante

Antes de Windows Server 2008, el atributo objectClass no se indexa. Esto se debe a que tiene varios valores y es muy no único; es decir, cada instancia del atributo objectClass incluye la clase superior . Esto significa que un índice sería muy grande e ineficaz. Para buscar objetos de una clase determinada, use el atributo objectCategory , que es de un solo valor e indexado. Para obtener más información sobre el uso de estas propiedades en filtros de búsqueda, vea Decidir qué buscar.

 

Para la mayoría de las clases, defaultObjectCategory es el nombre distintivo del objeto classSchema de la clase. Por ejemplo, defaultObjectCategory para la clase organizationalUnit es "CN=Organizational-Unit,CN=Schema,CN=Configuration,DC<=forestroot>". Sin embargo, algunas clases hacen referencia a otra clase como su defaultObjectCategory. Esto permite que una consulta encuentre fácilmente grupos de objetos relacionados, incluso si son de clases diferentes. Por ejemplo, las clases user, person, organizationalPerson y contact identifican la clase person en sus propiedades defaultObjectCategory . Esto permite que los filtros de búsqueda como (objectCategory=person) busquen instancias de todas estas clases con una sola consulta. Las consultas para personas son muy comunes, por lo que se trata de una optimización sencilla.

Si crea una subclase a partir de una clase estructural, el procedimiento recomendado es establecer el valor defaultObjectCategory de la nueva clase en el mismo nombre distintivo de la superclase. Esto permite que la interfaz de usuario estándar "busque" la subclase.