2015-04-07 159 views
1

我試圖創建一個泛型類型的實例。我嘗試通過反射獲取構造函數,現在您將看到下面的方法,並且兩次產生的對象都爲null。Activator.CreateInstance調用構造函數,但返回null

Type type = typeof(StatDefinition<>).MakeGenericType(statTypes[selectedType]); 
object definitionObject = Activator.CreateInstance(type, newName, newDescription); 

StatTopic.WriteLine(definitionObject); 

爲了幫助理解變量,statTypes [selectedType]只是一個基本類型(bool,int,float等)。對於我的測試,它一直是typeof(float)。 'newName'和'newDescription'都是字符串。

爲StatDefinition <>的構造是:

public StatDefinition(string name, string description) : base(name, description) 
{ 
    StatTopic.WriteLine(typeof(T)); 
} 

我的控制檯第一輸出 'System.Single'(從StatDefinition的構造函數),由下面的 '空'(definitionObject爲空)。

我似乎無法找到原因,構造函數顯然被調用沒有問題,但新的對象不被返回。

編輯:stat定義類擴展Unity3D的'ScriptableObject'類,這似乎是問題。仍然不知道如何解決這個問題

+3

你可能想嘗試'Activator.CreateInstance(type,new object [] {newName,newDescription});' – Alex

+0

謝謝,但我有完全相同的問題。任何其他想法? – Randomman159

+0

所以,如果你把一個斷點'statTopic.WriteLine(definitionObject);'它是否顯示'definitionObject'爲空? – Alex

回答

0

原因是擴展'ScriptableObject'類(來自Unity3D)是什麼原因造成的問題。

似乎是基於Unity必須初始化其對象的方式。