Search code examples
c#reflectionsystem.reflectionviewbagactivator

how to create an instance of class and set properties from a Bag object like session


the class will be declared in runtime and values are stored in a Bag object like session or ViewBag . Now I want to create an instance of the class and set it's properties using Bag data . I know that I should use reflection , but I don't know if there is any method out of box that does such things or I should create one ?

session["Foo"] = "foo";
session["Bar"] = "bar";

var instance = System.Activator.CreateInstance(Type.GetType(className));

instance = ? // how to set properties using session

the class is not available in design time and application has no idea what its properties are .


Solution

  • Type myType = Type.GetType(className);
    var instance = System.Activator.CreateInstance(myType);
    PropertyInfo[] properties = myType.GetProperties();
    
    foreach (var property in properties)
    {
        property.SetValue(instance, session[property.Name], null);
    }