This article will explain how we can create objects in runtime, using late binding technique.
Late-Binding
Assume you are in a situation where you want to create object of a class only in runtime. Say for example, the class name is known to you only when you read it from an xml configuration file.
We can't instantiate it, because of the fact that we do not know which class has to be used. Late-binding technique will give you a hand in such kind of difficult situation.
Factory Method
We are using a factory method in this example, which will do the job for us. It will get the class name as parameter, create the object and give it back to you.
Code:
using System;
using EtchingFormExceptions;
/// <summary>
/// Factory Class
/// </summary>
public static class Factory
{
// This is a factory method that returns the required object
// using late binding.(i.e. the class is available only in runtime)
public static Employee GetEmployee(string Classname)
{
Employee EmployeeObject;
try
{
// Set this as a rule. You have to pass Namespace.Classname
string FullName = "MyProjectNameSpace." + Classname;
Type t = Type.GetType(FullName);
// Create instance using Activator class.
object oTObject = Activator.CreateInstance(t);
// Type cast it to our employee.
EmployeeObject = (Employee)oTObject;
}
catch (Exception)
{
throw new ClassNotFoundException();
}
return EmployeeObject;
}
}