2010-02-28 19 views

Respuesta

8

esto es estándar interface based programming.

Al devolver un IAsyncResult, el marco es libre de cambiar la implementación interna en un momento posterior, sin romper el código escrito contra la API del marco. Esto, en esencia, nos dice, como desarrolladores, que no nos debería importar qué tipo de implementación se utiliza, siempre que se cumpla la interfaz (IAsyncResult).

Si, en cambio, se devolviera la clase real AsyncResult, el cambio a una clase diferente rompería el código existente.

Además, esto permite que el marco utilice la misma interfaz (IAsyncResult) en varios lugares, independientemente de si la clase AsyncResult es o no adecuada. Me he aprovechado de esto, personalmente, ya que he creado mis propias funciones asincrónicas que devuelven IAsyncResult respaldado por una clase diferente, que almacenaba la información que era importante para mí. Esto permite que mi propio código funcione como el marco, sin restringirme a la implementación del marco.

+0

Tiene sentido. Gracias por su ayuda – AspOnMyNet

+1

Heaven nos ayuda si necesitan agregar otra función a esa interfaz, sin embargo. – Will

2

Porque no siempre devuelve un AsyncResult. El objetivo de delegado puede existir en otro contexto de ejecución, una clase derivada de RealProxy puede implementar un proxy para él. Remoting sería un ejemplo. Devolver un tipo de interfaz lo hace transparente.

Cuestiones relacionadas