private static bool SupportIcallBind(TypeReference _type) { if (_type.Namespace.StartsWith("UnityEngine")) { if (IcallSupportClass.Contains(_type.Name)) { return(true); } var ct = _type.BaseType(); while (ct != null) { if (SupportIcallBind(ct)) { return(true); } ct = ct.BaseType(); } } return(false); }
public static bool Filter(TypeReference type) { if (DropTypes.Contains(type)) { return(false); } foreach (var t in IgnoreTypeSet) { if (type.FullName.Contains(t)) { DropTypes.Add(type); return(false); } } if (IsDelegate(type)) { var tList = GetDelegateParams(type, null, out var rType); tList.Add(rType); foreach (var t in tList) { if (t != null && !Utils.Filter(t)) { DropTypes.Add(type); return(false); } } } if (type.IsGeneric() && !IsDelegate(type)) // { Log("ignorType: " + type.FullName); DropTypes.Add(type); return(false); } if (IsException(type)) { Log("ignorType: " + type.FullName); DropTypes.Add(type); return(false); } if (type.IsArray) { DropTypes.Add(type); return(false); } if (IsAttribute(type)) { DropTypes.Add(type); return(false); } var td = type.Resolve(); if (td != null && IsObsolete(td) || td.IsInterface) { DropTypes.Add(type); return(false); } if (td != null && td.IsStruct()) { foreach (var f in td.Fields) { if (!f.IsStatic && !Utils.Filter(f.FieldType)) { DropTypes.Add(type); return(false); } } } var ct = type.BaseType(); while (ct != null) { if (!Filter(ct)) { DropTypes.Add(type); return(false); } ct = ct.BaseType(); } return(true); }