Posteado por: eocampo | febrero 18, 2010

Serialización de System.DirectoryServices.AccountManagement.UserPrincipal

Inglés

Como lo habrán notado no se puede serializar este Tipo. Esto es por dos razones; la primera sus clases base no están marcadas con el atributo [Serialize], la segunda y más importante, la clase tiene dependencias con recursos no administrados y tiene que mantener la conexión hacia ellos. Así que aún utilizando los trucos más obscuros podríamos llevar esta clase al cliente puesto que esperaría poder conectarse al Active Directory, y finalmente si esto fuera posible perdería todo el sentido. Si uno puede conectarse al Active Directory desde el lado cliente pues sería probablemente más simple conectarse desde el principio al AD y no ha nuestro servicio en el back end.

Así que si únicamente se necesita serializar los datos o algunos de ellos de la información de UserPrincipal lo más recomendable sería utilizar el patrón memento.

Si tenemos muchas propiedades que establecer y no nos importa mucho el acoplamiento entre la clase memento y la origina ( por ejemplo si la clase memento se va serializar a través de un web service de forma que para el cliente sólo van a sobrevivir las funciones y propiedades públicas) podemos agregar un constructor interno que reciba como parámetro la clase original:

[Serialize]
public class UserInfo
{
  private string displayName;
  ...

  public UserInfo()
  {
  }

  internal UserInfo(UserPrincipal user)
  {
      this.displayName = user.DisplayName;
      ...
  }
}

De esta forma podemos modificar nuestro valor de retorno creando el memento al momento:

return new UserInfo(user);
Anuncios

Responses

  1. […] System.DirectoryServices.AccountManagement.UserPrincipal Serialization Español […]


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Categorías

A %d blogueros les gusta esto: