![](/img/trans.png)
[英]How to get a System.Collections.Generic.List<FieldInfo> which holds all FieldInfo's of an object of a Type T up to the Object in the class hierarchy?
[英]Check if FieldInfo type is generic class without type
我有一個通用類( ClassName<T>
),我有幾個FieldInfo
用於具有不同T
的字段( 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]
類型fields[a]
有Field
,以及ANY <T>
。 謝謝。 :)
我想檢查一下它的字段類型[a]里面有Field,還有ANY。 謝謝。 :)
我不太確定我能理解這一說法,但我認為您正在尋找這樣的東西:
if(fields[a].IsGenericType &&
fields[a].FieldType.GetGenericTypeDefinition() == typeof(Field<>))
這將返回true
,如果字段的類型是Field<T>
不管類型的T
...
但是,如果您不緩存,那將是丑陋且不完善的。
你可以試試這個
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)
{
// ...
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.