initialize a class by string variable in c#?

14,725

Solution 1

System.Activator.CreateInstance(Type.GetType(className))

The problem, however, is that C# 3.0 is a statically typed language. You can't just call random methods on the returned object. You can have the classes you might instantiate implement some common interface and cast the result of the above expression to the interface or manually use reflection to call methods on the returned object.

Solution 2

You can use the Activator.CreateInstance method to achieve a similar result. But you will have to provide the assembly name in addition to the fully qualified name of the type

var instance = Activator.CreateInstance("SomeAssemblyName","Some.Full.Type.Test");

Solution 3

You can use Activator.CreateInstance. The documentation for the various overloads is here: http://msdn.microsoft.com/en-us/library/system.activator.createinstance.aspx

Share:
14,725
Moon
Author by

Moon

Updated on June 05, 2022

Comments

  • Moon
    Moon almost 2 years

    is it possible to initialize a class by a string variable? I have code in PHP.

    <?php
      $classname = "test";
    
      $oTest = new $classname();
    
      class test{
      }
    ?>
    

    how do I do this in c#?

  • Ben Griswold
    Ben Griswold over 14 years
    Seeing the answer helped me understand the question. +1
  • Colin Mackay
    Colin Mackay over 14 years
    What do you mean by "C#, as of Version 3.0 is a statically typed language". That suggests it only recently became a statically typed language. It always has been. In C# 4.0 there is the new dynamic keyword which means that C# will get some aspects of dynamic languages if desired.
  • mmx
    mmx over 14 years
    Colin: I might have worded it ambiguously. Fixed.