Я пытаюсь создать экземпляр универсального типа. Я попытался получить конструктор через отражение, и теперь так, как вы увидите ниже, и оба раза результирующий объект был нулевым.
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), а затем «null» (definitionObject имеет значение null).
Кажется, я не могу найти причину этого, конструктор, очевидно, вызывается без проблем, но новый объект не возвращается.
РЕДАКТИРОВАТЬ: класс определения статистики расширяет класс Unity3D 'ScriptableObject', и это, похоже, проблема. Все еще не уверен, как обойти это
Activator.CreateInstance(type, new object [] { newName, newDescription });
- person Alex   schedule 07.04.2015StatTopic.WriteLine(definitionObject);
, покажет ли она, чтоdefinitionObject
равно нулю? - person Alex   schedule 07.04.2015