I am using VB at the moment and VB has an annoying feature called "Default Form Instance", which creates a default instance of a form object when you reference the form class instead of form instance.

ex:

```
public class frmMain  
  Inherits System.Windows.Forms.Form  
end class  

private Sub Sub1  
  frmMain.Show()  
end Sub  

```

The code above compiles and runs without an error because runtime gives you a new instance of frmMain when you call it by class name. 

The question is:

**Is there a way to replace the default instance with an instance that I have created?** 
Another way to put it: Is there a way to set the instance that I created to be the default instance?

For those who would like to ask "Why on earth would you need something like that ?":

I have this application, let's call it `MyApplication.exe`, which is a windows forms application and `frmMain` is the main form. 
Many references in the application to the main form is through the default instance, which was working fine until now.
I am making some changes to the application. Instead of running `MyApplication.exe` directly, I will have to load the assembly dynamically and run it through reflection. Here is how I do it:

```
Dim assembly As Reflection.Assembly = LoadAssembly("MyApplication.exe")  
Dim frm As Object = assembly.CreateInstance("MyApplication.frmMain")  
frm.Show()

```

I create and show an instance of `frmMain` through reflection. Later on, when the application tries to access `frmMain` through the default instance, the runtime creates a new `frmMain` instance because it thinks the default instance is not there yet. But now the default instance and the one on the screen are different objects.

Bottom line is: Through reflection I am trying to mimic the exact behavior of running MyApplication.exe directly.