How to pass object from .NET to Delphi and vice versa

Hello. I’m trying to replicate the sample ( from this article [Documentation | RemObjects Software][1]) and pass object from .NET to Delphi. I can’t do this, because I don’t understand what is the variable “instance” in this code

`public partial class Main : Form, IHYCrossPlatformHost, IObjectProvider
{
[…]

//implementing IObjectProvider interface
public IUser CreateObject()
{
return new UserWrapper(new User(“Admin”, “12345”));
}

//calling IObjectProvider form a plugin instance
private void GetDelphiUserButton_Click(object sender, EventArgs e)
{
if (instance is IObjectProvider)
{
IUser user = (instance as IObjectProvider).CreateObject();
MessageBox.Show(String.Format(“Name: {0} Password: {1}”, user.Name,user.Password));
}
}
}`

I need help! Could you explain me how it works? May be someone has replicate this sample and it works correctly? Please, send me this sample!
p.s. I use Visual Studio 2013 and Delphi 2007
Best regards,
Anton
[1]: Documentation | RemObjects Software

“Instance” is a reference to an instance of your plugin, for example:

private IHYCrossPlatformPlugin Instance = null; 

private void Main_Load(object sender, EventArgs e)
{
  moduleManager.LoadModule("Plugin.dll");
  Instance = moduleManager.CreateInstance("MyPlugin");
  hostPanel1.HostPlugin(Instance as IBasePlugin);
}

I did it! Thank you so much!