【发布时间】:2019-03-25 12:15:16
【问题描述】:
我正在尝试创建MonobehaviourField<T> 类的实例并将其放入monobehaviourFields 数组中。我想使用来自monobehaviourFields 的当前字段中的类型作为T。这一行
monobehaviourFields[i] = new MonobehaviourField<typeof(fieldType)>("test");
不工作。如何根据fieldType创建实例并放入数组中?
using UnityEngine;
using System.Reflection;
using System;
using System.Linq;
[Serializable]
public class MonobehaviourWrapper
{
private MonobehaviourField<object>[] monobehaviourFields;
public MonobehaviourWrapper(FieldInfo[] fields)
{
monobehaviourFields = new MonobehaviourField<object>[fields.Length];
for (int i = 0; i < monobehaviourFields.Length; i++)
{
Type fieldType = fields[i].FieldType;
monobehaviourFields[i] = new MonobehaviourField<typeof(fieldType)>("test");
}
}
[Serializable]
public class MonobehaviourField<T>
{
[SerializeField] private string fieldName;
[SerializeField] private T objectContainer;
[SerializeField] private string typeName;
public MonobehaviourField(string fieldName)
{
this.fieldName = fieldName;
this.typeName = typeof(T).FullName;
}
public Type FieldType { get { return Type.GetType(typeName); } }
public T ObjectContainer { get { return objectContainer; } set { objectContainer = value; } }
public string FieldName { get { return fieldName; } set { fieldName = value; } }
}
}
【问题讨论】: