Bueno… esto más que un Tip/Trick es una curiosidad. Me encanta el uso de System.Reflection, hasta tal punto que en algún caso he llegado a no usar el diseñador de Windows Forms de Visual Studio y he creado formularios a través de System.Reflection, el problema que tenemos es que ese objeto ¿dónde tenemos que instanciarlo para lanzarlo con la aplicación al igual que haríamos con el diseñador? La respuesta es el Program.cs, por defecto Visual Studio nos crea el siguiente código:
using System;
using System.Collections.Generic;
using System.Windows.Forms;
namespace CopyDirectory
{
static class Program
{
/// <summary>
/// Punto de entrada principal para la aplicación.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
}
La verdad a mi me deja muchas puertas abiertas esto [:D]. Pero lo que queremos ahora nosotros es substituir la linea Applicacion.Run(new Form1()); por un formulario que hayamos creado nosotros y un ejemplo de ello es el siguiente, copio solo el Main():
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Form form = new Form();
Button button = new Button();
button.Text = «Aceptar»;
form.Controls.Add(button);
Application.Run(form);
}
Esto me deja la puerta abierta no solo a formulario que no fueron creados con Visual Studio (de hecho el uso que yo le he dado a esto es con un formulario creado por Reflection con el metodo AppDomain.CurrentDomain.CreateInstanceAndUnwrap();). Pero por ejemplo… alguna vez podemos querer crear aplicaciones sin interfaz de usuario (sin ser nisiquiera Console, ni Service).
Así como el Tip/Trick de ayer era más útil, este ya se que lo es menos, pero bueno yo lo he tenido que usar [:)] así que alguna utilidad tiene.
Espero que le encontréis como le he encontrado yo utilidad.