Apareció un error de tiempo de ejecución después de mover un código a una nueva clase

Yo tenia el codigo:

namespace ShowDiagram1
{
    public partial class WebForm1 : System.Web.UI.Page
   {
         bitmap.Save(Server.MapPath("pic1.jpg"), ImageFormat.Jpeg);
        Image1.ImageUrl = this.ResolveUrl("pic1.jpg");
    }
}

Funcionó bien. Moví este código a una nueva clase.

 namespace ShowDiagram1
 {
     public class MyDraw : WebForm1
     {
          ...
         bitmap.Save(Server.MapPath("pic1.jpg"), ImageFormat.Jpeg);
        Image1.ImageUrl = this.ResolveUrl("pic1.jpg");
     }
 }

Ahora tengo un error de tiempo de ejecución

Referencia a objeto no establecida como instancia de un objeto. Descripción: se produjo una excepción no controlada durante la ejecución de la solicitud web actual. Revise el seguimiento de la pila para obtener más información sobre el error y dónde se originó en el código.

Detalles de la excepción: System.NullReferenceException: referencia de objeto no establecida en una instancia de un objeto.

Error de fuente:

Línea 85: Image1.ImageUrl = ResolveUrl("pic1.jpg");

pic1.jpg fue creado bien.

Gracias.

preguntado el 03 de mayo de 12 a las 12:05

Estás seguro bitmap no es nulo y pic1.jpg se queda donde buscas? -

Image1 será nulo. Mientras creaste un objeto (para que el código se compilara), probablemente no lo inicializaste. -

¿De dónde viene Image1? Puede ser que sea un objeto indefinido para una nueva clase. -

bitmap ciertamente no es nulo, porque se creó pic1. Revisé la fecha y hora de creación de pic1.jpg. -

¿Puede simplemente usar un punto de interrupción y pasar el mouse sobre todos los objetos en esa declaración para encontrar cuál es nulo? -

1 Respuestas

Creo que el objetivo completo de esta pregunta era bastante vago y debería redefinirse. Si MyDraw estaba destinado a ser solo una clase de utilidad para contener algún código, entonces no debería tener nada que ver con la herencia y, en cambio, los datos necesarios deberían pasarse en el constructor y almacenarse como variables.

contestado el 03 de mayo de 12 a las 14:05

Nop. Tengo muchos errores de compilación: Token 'base' no válido en declaración de miembro de clase, estructura o interfaz Tipo esperado El nombre 'Imagen1' no existe en el contexto actual etc- user993354

Encontré una mejor solución. Heredo MyDraw:WebForm. Y paso Image1 como parámetro a MyDraw. Todo funciona bien. Parece la solución más fácil. No tengo problemas con las líneas bitmap.Save(Server.MapPath("pic1.jpg"), ImageFormat.Jpeg); Image1.ImageUrl = ResolveUrl("pic1.jpg"); ¡¡Gracias a todos!! Por cierto, ¿por qué el salto de línea no funciona aquí? - user993354

@ user993354 Editó la respuesta para reflejar mejor la solución a la que llegamos en los comentarios. Siéntase libre de aceptarlo, si el problema ahora está resuelto. - miika l

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.