我有一个通用类(ClassName<T>
),我有几个FieldInfo
用于具有不同T
s(Class<bool>
,Class<int>
的字段等等...)。如何检查FieldInfo
的类型是ClassName
,而不是ClassName<bool>
还是ClassName<int>
?这是我的代码:
public class Field<T>
{
public T value;
public Field(T value)
{
this.value = value;
}
}
...
public class Action_SetPosition : Action
{
public Field<GameObject> gameObject = new Field<GameObject>(null);
public Field<Vector3> position = new Field<Vector3>(Vector3.zero);
}
...
FieldInfo[] fields = typeof(Action_SetPosition).GetFields();
for (int a = 0; a < fields.Length; a++)
{
if (fields[a].FieldType == typeof(Field<ANYTHING>))
{
}
}
我想检查一下fields[a]
中有Field
的类型,以及 ANY <T>
。谢谢。 :)
答案 0 :(得分:3)
我想检查字段的类型[a]中有字段,还有任何字段。谢谢。 :)
我不太确定我理解这个陈述,但我认为你正在寻找这样的事情:
if(fields[a].IsGenericType &&
fields[a].FieldType.GetGenericTypeDefinition() == typeof(Field<>))
如果字段类型为true
,则无论Field<T>
的类型如何都会返回T
...
答案 1 :(得分:0)
但如果你不缓存,那就有点难看了。
你可以试试这个
public interface IField {}
public class Field<T> : IField
{
public T value;
public Field(T value)
{
this.value = value;
}
}
// ...
FieldInfo[] fields = typeof(Action_SetPosition).GetFields();
for (int a = 0; a < fields.Length; a++)
{
if (fields[a] is IField)
{
// ...
}
}