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);

Advertisement

Respuestas

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


Deja un comentario

Fill in your details below or click an icon to log in:

Logo de WordPress.com

You are commenting using your WordPress.com account. Log Out / Cambiar )

Twitter picture

You are commenting using your Twitter account. Log Out / Cambiar )

Facebook photo

You are commenting using your Facebook account. Log Out / Cambiar )

Connecting to %s

Categorías

Seguir

Get every new post delivered to your Inbox.