我正在尝试创建泛型类型的实例。我已经尝试通过反射获取构造函数,现在您将在下面看到的方式,并且结果对象的两次都为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'类,这似乎是个问题。仍然不确定如何解决这个问题
答案 0 :(得分:0)
结果扩展了&#39; ScriptableObject&#39; class(来自Unity3D)是造成这个问题的原因。
似乎是基于Unity必须初始化对象的方式。