我正在处理一个脚本,我可以提供各种对象并告诉它以各种方式修改它们。这对很多类型都非常有效,但我不知道如何去处理List(和其他Collections)。 这不起作用:如何找出对象是否为任何类型的列表?
List<Transform> transformList = new List<Transform>();
void MyFunction(object o) {
if(o.GetType() == typeof(int) DoIntStuff(); //Easy
else if(o.GetType() == typeof(Color) DoColorStuff(); //Also Easy
else if(o.GetType() == typeof(List<>)) DoListStuff(); //Not as easy :(
}
void Start() {
MyFunction(transformList);
}
我不能做
typeof(List<T>)
,因为T没有在那里当然存在。
typeof(List<object>)
也不起作用。
那么我怎么才能知道我所拥有的是什么类型的列表?
我一直挺直,你在那里做的不好。为什么你需要MyFunction,你不能直接调用DoInt/Color/ListStuff吗? – Everts
这是一个过于简单的例子。在实际的脚本中,我可以放入任何GameObject中,并通过Reflection获取所有组件上的所有字段,然后脚本通过它们进行过滤并根据它在UI中的设置修改值。 – col000r
由于它是一个编辑器脚本,您可能还有一个用于拖动的插槽和一个用于该类型的下拉列表。然后你有一个字典枚举,行动和基于选定的枚举类型,它调用该行动。检查类型的想法可能会导致问题,如果一个类型可以是两个。假设你最终检查狗和动物。你的命令也必须考虑。你会遇到很多麻烦。 – Everts