我有一個抽象類Step以及許多基於XML文檔實例化的後代Step類。通過類名實例化一個.Net對象
因此我想創建基於XML文檔
步驟類型=「GenerateReport」 .... 步驟類型=「PrintReport」 在類型的特定步驟的類的實例。 ...
如何通過指定類名(最好是傳遞給構造函數的參數)來實例化一個對象?
我有一個抽象類Step以及許多基於XML文檔實例化的後代Step類。通過類名實例化一個.Net對象
因此我想創建基於XML文檔
步驟類型=「GenerateReport」 .... 步驟類型=「PrintReport」 在類型的特定步驟的類的實例。 ...
如何通過指定類名(最好是傳遞給構造函數的參數)來實例化一個對象?
最簡單的方法是Activator.CreateInstance
重載接受Type
和params object[]
。對於Type
,您可以有時使用Type.GetType(string)
,但是這不檢查所有程序集(只是當前程序集和某些系統程序集)。如果該名稱集限定你可能會確定 - 但如果它僅僅是合格的命名空間(即全名),那麼你可能會想使用Assembly.GetType(string)
- 即
Type type = typeof(SomeKnownTypeInTheSameAssembly).GetType(fullName);
object obj = Activator.CreateInstance(type, args);
我認爲你只是想用Activator.CreateInstance
方法:
var object = Activator.CreateInstance(null, "Classname");
感謝詳細的回答 - 這工作過一種享受。 – 2009-06-11 20:17:59