2013-07-21 43 views
-2
String name = "register"; 
Class<?> classObj = Class.forName(name); 
stateComponent = (IState) classObj.newInstance(); 

這是我在java中創建動態類的代碼。任何人都可以給我一個開始如何在C#中創建一個動態類?在c中創建動態類#

+2

閱讀有關反映在MSDN。 – SLaks

+2

谷歌*在c#*中創建動態類的第一個結果:http://msdn.microsoft.com/en-us/library/ee461504.aspx – CodingIntrigue

回答

3

對應於Java的Class<T>的C#類是System.Type。與Java不同,Type不是通用的(它不需要,因爲.NET不使用類型擦除來實現泛型)。

Java代碼翻譯如下:

string name = "..."; // Full name of your class 
Type typeObj = Type.GetType(name); 
// Get the default constructor 
ConstructorInfo constr = typeObj.GetConstructor(new Type[0]); 
// Invoke the constructor to create the object 
stateComponent = (IState)constr.Invoke(new object[0]); 
+0

非常感謝! –

+0

爲什麼我在這行代碼中得到null類型typeObj = Type.GetType(name);我傳遞一個字符串名稱typeof(DownloadNewsState).Name; –

+0

@CarloAdap您需要傳遞該類的命名空間限定名稱。此外,爲了使此代碼正常工作,需要將類的程序集與您的應用程序鏈接。 – dasblinkenlight

0
Activator.CreateInstance(Type.GetType("Here your type name"));