Generic List<T>
Used Namespaces
using System;
using System.Collections.Generic;
Used Concept
Generic Collection C#
Steps to create a generic List<T> at runtime:
Step 1: Creating the generic List<T>
//Creating the Generic List.
Type d1 = typeof(List<>);
Step 2: Determining the type of the generic List<T> :
//Creating the Type for Generic List.
Type[] typeArgs = { typeof(string) };
Step 3: Combining its Type to form the List<T>:
//Now combing the List and its type.
Type makeme = d1.MakeGenericType(typeArgs);
Output:
List<String> -- This created in the above step.
Step 4: Creating the Instance for List<T>:
//Creating the Instance for List.
object o = Activator.CreateInstance(makeme);
Output:
List<String> obj=new List<string>; -- This is created from the above step.
Step 5: Converting the Object to the List<T> object and add the item to it:
//Now typecasting the object to List.
List<string> itsMe = o as List<string>;
itsMe.Add("Arun");
Step 6: Displaying the result:
//Displaying the Result
Response.Write((itsMe == null) ? "Failed" : "Succeeded");
Step 7: Code snippet with Output:
Generic Dictionary<k,T>
Used Concept
Generic Collection C#
Used Namespaces
using System;
using System.Collections.Generic;
Steps to create a Generic Dictionary<k,T> at runtime:
Step 1: Creating the Dictionary Type:
//Creating the Dictionary Type.
Type d1 = typeof(Dictionary<,>);
Step 2: Creating Types for the KeyValue:
//Creating KeyValue Type for Dictionary.
Type[] typeArgs = { typeof(string), typeof(List<string>) };
Step 3: Passing the KeyValue Type and make it a generic type:
//Passing the Type and create Dictionary Type.
Type makeme = d1.MakeGenericType(typeArgs);
Step 4: Creating an instance for Dictionary<K,T>:
//Creating Instance for Dictionary<K,T>.
object o = Activator.CreateInstance(makeme);
Step 5: Converting the Object to a Dictionary Object:
//Typecasting the Object to Dictionary Obj.
Dictionary<string, List<string>> itsMe =
o as Dictionary<string, List<string>>;
Step 6: Getting the Type casted Object:
//Getting the Type of Casted object.
Type dicType = itsMe.GetType();
Step 7: Helps to get the Generic Arguments alone as collection:
// This is used to check any generic arguments passed.
Type[] dicTypes = dicType.GetGenericArguments();
Step 8: Helps to determine if the typecasted object type is generic:
//To check whether it is generic type.
Response.Write(" Is this a generic type? {0}" + dicType.IsGenericType);
Step 9: Helps to check whether it is Generic Type definition:
Response.Write(" Is this a generic type definition? {0}" + dicType.IsGenericTypeDefinition);
Step 10: Iterating the passed Generic Type arguments:
//Iterate the passed generic type arguments.
foreach (Type type in dicTypes)
{
Response.Write("" + type.IsGenericType);
}
Step 11: Creating the List<T> item and added to the value and set the key for it:
//Creating the list item and adding to dictionary.
List<string> add = new List<string>();
itsMe.Add("Arun", add);
Step 12: Displaying the results:
//Results
Response.Write((itsMe == null) ? "Failed" : "Succeeded");
Output for Runtime Dictionary:
Code Snippet:
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace DictionaryRuntime
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
CreateDicGenericInstance();
}
/// <summary>
/// This is used to create instance generic list obj dynamically.
/// </summary>
public void CreateDicGenericInstance()
{
//Creating the Dictionary.
Type d1 = typeof(Dictionary<,>);
//Creating KeyValue Type for Dictionary.
Type[] typeArgs = { typeof(string), typeof(List<string>) };
//Passing the Type and create Dictionary Type.
Type makeme = d1.MakeGenericType(typeArgs);
//Creating Instance for Dictionary<K,T>.
object o = Activator.CreateInstance(makeme);
//Typecasting the Object to Dictionary Obj.
Dictionary<string, List<string>> itsMe =
o as Dictionary<string, List<string>>;
//Getting the Type of Casted object.
Type dicType = itsMe.GetType();
// This is used to check any generic arguments passed.
Type[] dicTypes = dicType.GetGenericArguments();
//To check whether it is generic type.
Response.Write(" Is this a generic type? {0}" + dicType.IsGenericType);
Response.Write(" Is this a generic type definition? {0}" + dicType.IsGenericTypeDefinition);
//Iterate the passed generic type arguments.
foreach (Type type in dicTypes)
{
Response.Write("" + type.IsGenericType);
}
//Creating the list item and adding to dictionary.
List<string> add = new List<string>();
itsMe.Add("Arun", add);
//Results
Response.Write((itsMe == null) ? "Failed" : "Succeeded");
}
}
}
Thanks for reading this article. Have a nice day.