¿Mala práctica? Uso no canónico de la declaración de uso de c #

C # tiene elusing declaración, específicamente para objetos identificables. Presumiblemente, cualquier objeto especificado en elusing La declaración tendrá algún tipo de recurso que debería ser liberado de manera determinista.

Sin embargo, me parece que hay muchos diseños en la programación que tienen un principio y un final definidos, pero que carecen de soporte de lenguaje intrínseco. losusing La construcción ofrece la oportunidad de utilizar las funciones integradas de un editor de código para, al menos, resaltar de manera clara y natural el alcance de dicho diseño u operación.

Lo que tengo en mente es el tipo de operación que frecuentemente comienza con unaBeginXXX() yEndXXX() método, aunque hay muchos sabores diferentes, como una ejecución de código asíncrono que implica un "inicio" y una "unión".

Tomemos este ejemplo ingenuo.

webDataOperation.Start();
GetContentFromHardDrive();
webDataOperation.Join();
// Perform operation that requires data from both sources

¿Qué pasa si, en cambio, el método de inicio devolvió un objeto cuyoIDisposable.Dispose método realiza la operación de unión.

using(webDataOperation.Start()) {
    GetContentFromHardDrive();
}
// Perform operation that requires data from both sources

O, mejor aún, lo que tenía específicamente en mente: tengo un objeto que hace gráficos altamente especializados y tiene unBegin() yEnd() Método (un diseño también presente en DirectX y XNA). En lugar...

using(blitter.BlitOperation()) {
    // Do work
}
// Use result

Parece ser más natural y legible, pero no es aconsejable, ya que utiliza elIDisposable interfaz y lausing declaración para fines no deseados? En otras palabras, ¿estaría esto a la par con oVerloading un operador de una manera no intuitiva?

Respuestas a la pregunta(6)

Su respuesta a la pregunta