String name = "register";
Class<?> classObj = Class.forName(name);
stateComponent = (IState) classObj.newInstance();
這是我在java中創建動態類的代碼。任何人都可以給我一個開始如何在C#中創建一個動態類?在c中創建動態類#
String name = "register";
Class<?> classObj = Class.forName(name);
stateComponent = (IState) classObj.newInstance();
這是我在java中創建動態類的代碼。任何人都可以給我一個開始如何在C#中創建一個動態類?在c中創建動態類#
對應於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]);
非常感謝! –
爲什麼我在這行代碼中得到null類型typeObj = Type.GetType(name);我傳遞一個字符串名稱typeof(DownloadNewsState).Name; –
@CarloAdap您需要傳遞該類的命名空間限定名稱。此外,爲了使此代碼正常工作,需要將類的程序集與您的應用程序鏈接。 – dasblinkenlight
Activator.CreateInstance(Type.GetType("Here your type name"));
閱讀有關反映在MSDN。 – SLaks
谷歌*在c#*中創建動態類的第一個結果:http://msdn.microsoft.com/en-us/library/ee461504.aspx – CodingIntrigue