简体   繁体   中英

initialize a class by string variable in c#?

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#?

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.

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");

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM