Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
TypeInfo.cs
Go to the documentation of this file.
3
4namespace System.Reflection;
5
6public abstract class TypeInfo : Type, IReflectableType
7{
8 public virtual Type[] GenericTypeParameters
9 {
10 get
11 {
13 {
14 return Type.EmptyTypes;
15 }
16 return GetGenericArguments();
17 }
18 }
19
21 {
23 get
24 {
25 return GetConstructors(BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic);
26 }
27 }
28
30 {
32 get
33 {
34 return GetEvents(BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic);
35 }
36 }
37
39 {
41 get
42 {
43 return GetFields(BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic);
44 }
45 }
46
48 {
50 get
51 {
52 return GetMembers(BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic);
53 }
54 }
55
57 {
59 get
60 {
61 return GetMethods(BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic);
62 }
63 }
64
66 {
68 get
69 {
71 foreach (Type type2 in array)
72 {
73 yield return type2.GetTypeInfo();
74 }
75 [UnconditionalSuppressMessage("ReflectionAnalysis", "IL2070:UnrecognizedReflectionPattern", Justification = "The yield return state machine doesn't propagate annotations")]
77 {
78 return type.GetNestedTypes(BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic);
79 }
80 }
81 }
82
84 {
86 get
87 {
88 return GetProperties(BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic);
89 }
90 }
91
93 {
95 get
96 {
97 return GetInterfaces();
98 }
99 }
100
102 {
103 return this;
104 }
105
106 public virtual Type AsType()
107 {
108 return this;
109 }
110
112 public virtual EventInfo? GetDeclaredEvent(string name)
113 {
114 return GetEvent(name, BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic);
115 }
116
118 public virtual FieldInfo? GetDeclaredField(string name)
119 {
120 return GetField(name, BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic);
121 }
122
124 public virtual MethodInfo? GetDeclaredMethod(string name)
125 {
126 return GetMethod(name, BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic);
127 }
128
130 public virtual TypeInfo? GetDeclaredNestedType(string name)
131 {
132 return GetNestedType(name, BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic)?.GetTypeInfo();
133 }
134
136 public virtual PropertyInfo? GetDeclaredProperty(string name)
137 {
138 return GetProperty(name, BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic);
139 }
140
142 public virtual IEnumerable<MethodInfo> GetDeclaredMethods(string name)
143 {
145 foreach (MethodInfo methodInfo in array)
146 {
147 if (methodInfo.Name == name)
148 {
149 yield return methodInfo;
150 }
151 }
152 [UnconditionalSuppressMessage("ReflectionAnalysis", "IL2070:UnrecognizedReflectionPattern", Justification = "The yield return state machine doesn't propagate annotations")]
154 {
155 return type.GetMethods(BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic);
156 }
157 }
158
159 public virtual bool IsAssignableFrom([NotNullWhen(true)] TypeInfo? typeInfo)
160 {
161 if (typeInfo == null)
162 {
163 return false;
164 }
165 if (this == typeInfo)
166 {
167 return true;
168 }
169 if (typeInfo.IsSubclassOf(this))
170 {
171 return true;
172 }
173 if (base.IsInterface)
174 {
175 return typeInfo.ImplementInterface(this);
176 }
178 {
180 for (int i = 0; i < genericParameterConstraints.Length; i++)
181 {
183 {
184 return false;
185 }
186 }
187 return true;
188 }
189 return false;
190 }
191
192 internal static string GetRankString(int rank)
193 {
194 if (rank <= 0)
195 {
196 throw new IndexOutOfRangeException();
197 }
198 if (rank != 1)
199 {
200 return "[" + new string(',', rank - 1) + "]";
201 }
202 return "[*]";
203 }
204}
virtual IEnumerable< MemberInfo > DeclaredMembers
Definition TypeInfo.cs:48
virtual IEnumerable< TypeInfo > DeclaredNestedTypes
Definition TypeInfo.cs:66
virtual IEnumerable< Type > ImplementedInterfaces
Definition TypeInfo.cs:93
virtual Type AsType()
Definition TypeInfo.cs:106
virtual IEnumerable< MethodInfo > DeclaredMethods
Definition TypeInfo.cs:57
virtual IEnumerable< PropertyInfo > DeclaredProperties
Definition TypeInfo.cs:84
virtual ? EventInfo GetDeclaredEvent(string name)
Definition TypeInfo.cs:112
virtual IEnumerable< EventInfo > DeclaredEvents
Definition TypeInfo.cs:30
virtual Type[] GenericTypeParameters
Definition TypeInfo.cs:9
virtual IEnumerable< MethodInfo > GetDeclaredMethods(string name)
Definition TypeInfo.cs:142
virtual IEnumerable< FieldInfo > DeclaredFields
Definition TypeInfo.cs:39
virtual ? FieldInfo GetDeclaredField(string name)
Definition TypeInfo.cs:118
virtual IEnumerable< ConstructorInfo > DeclaredConstructors
Definition TypeInfo.cs:21
virtual ? PropertyInfo GetDeclaredProperty(string name)
Definition TypeInfo.cs:136
virtual bool IsAssignableFrom([NotNullWhen(true)] TypeInfo? typeInfo)
Definition TypeInfo.cs:159
virtual ? TypeInfo GetDeclaredNestedType(string name)
Definition TypeInfo.cs:130
virtual ? MethodInfo GetDeclaredMethod(string name)
Definition TypeInfo.cs:124
static string GetRankString(int rank)
Definition TypeInfo.cs:192
virtual Type[] GetGenericParameterConstraints()
Definition Type.cs:505
EventInfo? GetEvent(string name)
Definition Type.cs:589
virtual Type[] GetGenericArguments()
Definition Type.cs:500
virtual bool IsGenericParameter
Definition Type.cs:85
FieldInfo[] GetFields()
Definition Type.cs:616
PropertyInfo[] GetProperties()
Definition Type.cs:877
bool ImplementInterface(Type ifaceType)
Definition Type.cs:1600
Type? GetNestedType(string name)
Definition Type.cs:797
virtual bool IsSubclassOf(Type c)
Definition Type.cs:1542
Type[] GetInterfaces()
static readonly Type[] EmptyTypes
Definition Type.cs:19
MethodInfo[] GetMethods()
Definition Type.cs:788
virtual bool IsGenericTypeDefinition
Definition Type.cs:113
MethodInfo? GetMethod(string name)
Definition Type.cs:675
ConstructorInfo[] GetConstructors()
Definition Type.cs:580
MemberInfo[] GetMembers()
Definition Type.cs:643
virtual EventInfo[] GetEvents()
Definition Type.cs:598