Dynamically Creating Custom Generic<T> class at
runtime:
Step 1: Creating a generic Type
Type
d1 = typeof(GenericTupleOfTwo<,>);
Step 2: Creating generic param Type for generic class
Type[]
typeArgs = { typeof(string),
typeof(List<string>)
};
Step 3: Combining the args to the generic type
Type
makeme = d1.MakeGenericType(typeArgs);
Step 4: Creating instance of generic class
object
o = Activator.CreateInstance(makeme);
Step 5: Typecasting to form the Generic class
GenericTupleOfTwo<string,
List<string>>
itsMe = o as
GenericTupleOfTwo<string,
List<string>>;
Step 6: Setting value for its param
itsMe.First = "First";
itsMe.Second = new
List<string>();
Step 7: Code Snippet:
///
<summary>
///
This is used to create instance generic list obj dynamically.
///
</summary>
public
void CreateCustomGenericInstance()
{
//Creating a generic Type.
Type d1 =
typeof(GenericTupleOfTwo<,>);
//Creating generic param Type for generic class.
Type[] typeArgs = {
typeof(string),
typeof(List<string>)
};
//Combining the args to the generic type.
Type makeme =
d1.MakeGenericType(typeArgs);
//Creating instance of generic class
object o =
Activator.CreateInstance(makeme);
//Typecasting to form the Generic class.
GenericTupleOfTwo<string,
List<string>>
itsMe = o as
GenericTupleOfTwo<string,
List<string>>;
//Setting value for its param.
itsMe.First = "First";
itsMe.Second = new List<string>();
}
Dynamically Creating Custom Generic<T> class at runtime:
Step 1: Set Namespace.ClassName as target Type
string
targetType = "SampleApplication.DynamicClass";
Step 2: Getting the Type of class
Type
reflectedType = Type.GetType(targetType);
Step 3: Creating param variables
List<string>
list = new List<string>();
list.Add("L");
Step 4: Creating instance for custom class
object
obj = Activator.CreateInstance<DynamicClass>();
Step 5: Passing params and invoking the method show from dynamic class
string
returnKey = (string)reflectedType.GetMethod("Show").Invoke(obj,
new object[] {
"arun", 1, true,
list });
Step 6: Code Snippet:
public
void CustomClass()
{
//Set Namespace.ClassName as target Type.
string targetType =
"SampleApplication.DynamicClass";
//Getting the Type of class.
Type reflectedType =
Type.GetType(targetType);
//Creating param variables
List<string>
list = new List<string>();
list.Add("L");
//Creating instance for custom class
object obj =
Activator.CreateInstance<DynamicClass>();
//Passing params and invoking the method show from
dynamic class.
string returnKey = (string)reflectedType.GetMethod("Show")
.Invoke(obj, new
object[] { "arun", 1,
true, list });
}