Activator.CreateInstance调用构造函数但返回null

时间:2015-04-07 03:29:06

标签: c# reflection activator

我正在尝试创建泛型类型的实例。我已经尝试通过反射获取构造函数,现在您将在下面看到的方式,并且结果对象的两次都为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&lt;&gt;的构造函数是:

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

我的控制台首先输出'System.Single'(来自StatDefinition的构造函数),然后输出'null'(definitionObject为null)。

我似乎无法找到原因,显然构造函数被调用没有问题,但是没有返回新对象。

编辑:统计定义类扩展了Unity3D的'ScriptableObject'类,这似乎是个问题。仍然不确定如何解决这个问题

1 个答案:

答案 0 :(得分:0)

结果扩展了&#39; ScriptableObject&#39; class(来自Unity3D)是造成这个问题的原因。

似乎是基于Unity必须初始化对象的方式。

相关问题