2008-12-03 14 views

Respuesta

3

No creo que encuentres un buen motivo. Parece que fue creado por primera vez por el equipo web, por lo que lo hicieron en su espacio de nombres/conjunto. También agregaron un LinkDemand para AspNetHostingPermission, lo cual es desafortunado.

En términos de su "uso previsto", dice MSDN

[El clase Par] es una clase de utilidad que se utiliza en diversas formas a lo largo ASP.NET, como durante las tareas de gestión de estado de la página o en manejadores de sección de configuración.
...
La clase de Par se puede utilizar de varias formas en implementaciones de persistencia de estado de página. El uso más común es como un contenedor para las colecciones ViewState y ControlState. En este caso, la propiedad First se usa para ViewState y Second para ControlState.

+0

Siempre he tenido la impresión de que se trataba de una idea posterior, algo que el equipo del espacio de nombres web.ui quería, pero no tenía la capacidad de ponerlo en el espacio de nombres del sistema. Es algo que siempre me han comido, y me preguntaba si hay una razón lógica que no podía ver. –

+0

Silo'd desarrollo en su peor :( – ShuggyCoUk

5

Se utiliza para serializar viewstate (junto con su primo Triplet).

Supongo que la razón por la que no son parte de la biblioteca base (aunque no hay nada específico de ASP.NET sobre ellos) es que no son muy útiles ya que están sin tipo.

Incluir el par no tipado y el triplete en la biblioteca base, podría verse como un estímulo para la programación "sin teclado".

Una tupla tipada puede ser útil, sin embargo (y creo que F # las tiene). Creo que los tipos anónimos cubren la mayoría de los casos de uso para tuplas heterogéneas.

+0

Entiendo por qué es posible que desee usarlo en una aplicación web, pero ¿por qué no hacerlo disponible en toda la biblioteca? Por ejemplo, ¿por qué no puedo usarlo en una DLL básica? –

+0

@John MacIntyre: puede usarlo en una DLL básica, solo tiene que incluir una referencia al ensamblado System.Web.UI. –

+0

Me doy cuenta de eso, pero si la DLL se usó para una aplicación de consola, por ejemplo, ¿no parece extraño tener una dependencia de un conjunto de interfaz de usuario web? ¿Realmente no debería estar solo en el espacio de nombres del sistema? –

0

Dios prohíbe que deberíamos tener un par tipado que sea más liviano que un diccionario y se pueda embeber en una lista de tipos para que sea indexable :). Por supuesto, crear uno de estos es indoloro, pero por qué.

3

Esto no responde la pregunta directamente, pero en .NET 4 puede, y probablemente debería, usar Tuple.

Para responder a la pregunta, creo que fue simplemente un error poner Pair in System.Web.UI y Microsoft ha intentado resolver este error con la introducción de la clase Tuple.

Cuestiones relacionadas