Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ CreateDefaultTypeInfo()

static TraceLoggingTypeInfo System.Diagnostics.Tracing.Statics.CreateDefaultTypeInfo ( Type dataType,
List< Type > recursionCheck )
inlinestatic

Definition at line 219 of file Statics.cs.

220 {
221 if (recursionCheck.Contains(dataType))
222 {
223 throw new NotSupportedException(SR.EventSource_RecursiveTypeDefinition);
224 }
225 recursionCheck.Add(dataType);
226 EventDataAttribute customAttribute = GetCustomAttribute<EventDataAttribute>(dataType);
228 {
229 TypeAnalysis typeAnalysis = new TypeAnalysis(dataType, customAttribute, recursionCheck);
230 return new InvokeTypeInfo(dataType, typeAnalysis);
231 }
232 if (dataType.IsArray)
233 {
234 Type elementType = dataType.GetElementType();
235 if (elementType == typeof(bool))
236 {
237 return ScalarArrayTypeInfo.Boolean();
238 }
239 if (elementType == typeof(byte))
240 {
241 return ScalarArrayTypeInfo.Byte();
242 }
243 if (elementType == typeof(sbyte))
244 {
245 return ScalarArrayTypeInfo.SByte();
246 }
247 if (elementType == typeof(short))
248 {
249 return ScalarArrayTypeInfo.Int16();
250 }
251 if (elementType == typeof(ushort))
252 {
253 return ScalarArrayTypeInfo.UInt16();
254 }
255 if (elementType == typeof(int))
256 {
257 return ScalarArrayTypeInfo.Int32();
258 }
259 if (elementType == typeof(uint))
260 {
261 return ScalarArrayTypeInfo.UInt32();
262 }
263 if (elementType == typeof(long))
264 {
265 return ScalarArrayTypeInfo.Int64();
266 }
267 if (elementType == typeof(ulong))
268 {
269 return ScalarArrayTypeInfo.UInt64();
270 }
271 if (elementType == typeof(char))
272 {
273 return ScalarArrayTypeInfo.Char();
274 }
275 if (elementType == typeof(double))
276 {
277 return ScalarArrayTypeInfo.Double();
278 }
279 if (elementType == typeof(float))
280 {
281 return ScalarArrayTypeInfo.Single();
282 }
283 if (elementType == typeof(IntPtr))
284 {
285 return ScalarArrayTypeInfo.IntPtr();
286 }
287 if (elementType == typeof(UIntPtr))
288 {
289 return ScalarArrayTypeInfo.UIntPtr();
290 }
291 if (elementType == typeof(Guid))
292 {
293 return ScalarArrayTypeInfo.Guid();
294 }
295 return new ArrayTypeInfo(dataType, TraceLoggingTypeInfo.GetInstance(elementType, recursionCheck));
296 }
297 if (dataType.IsEnum)
298 {
299 dataType = Enum.GetUnderlyingType(dataType);
300 }
301 if (dataType == typeof(string))
302 {
303 return StringTypeInfo.Instance();
304 }
305 if (dataType == typeof(bool))
306 {
307 return ScalarTypeInfo.Boolean();
308 }
309 if (dataType == typeof(byte))
310 {
311 return ScalarTypeInfo.Byte();
312 }
313 if (dataType == typeof(sbyte))
314 {
315 return ScalarTypeInfo.SByte();
316 }
317 if (dataType == typeof(short))
318 {
319 return ScalarTypeInfo.Int16();
320 }
321 if (dataType == typeof(ushort))
322 {
323 return ScalarTypeInfo.UInt16();
324 }
325 if (dataType == typeof(int))
326 {
327 return ScalarTypeInfo.Int32();
328 }
329 if (dataType == typeof(uint))
330 {
331 return ScalarTypeInfo.UInt32();
332 }
333 if (dataType == typeof(long))
334 {
335 return ScalarTypeInfo.Int64();
336 }
337 if (dataType == typeof(ulong))
338 {
339 return ScalarTypeInfo.UInt64();
340 }
341 if (dataType == typeof(char))
342 {
343 return ScalarTypeInfo.Char();
344 }
345 if (dataType == typeof(double))
346 {
347 return ScalarTypeInfo.Double();
348 }
349 if (dataType == typeof(float))
350 {
351 return ScalarTypeInfo.Single();
352 }
353 if (dataType == typeof(DateTime))
354 {
355 return DateTimeTypeInfo.Instance();
356 }
357 if (dataType == typeof(decimal))
358 {
359 return DecimalTypeInfo.Instance();
360 }
361 if (dataType == typeof(IntPtr))
362 {
363 return ScalarTypeInfo.IntPtr();
364 }
365 if (dataType == typeof(UIntPtr))
366 {
367 return ScalarTypeInfo.UIntPtr();
368 }
369 if (dataType == typeof(Guid))
370 {
371 return ScalarTypeInfo.Guid();
372 }
373 if (dataType == typeof(TimeSpan))
374 {
375 return TimeSpanTypeInfo.Instance();
376 }
377 if (dataType == typeof(DateTimeOffset))
378 {
379 return DateTimeOffsetTypeInfo.Instance();
380 }
381 if (dataType == typeof(EmptyStruct))
382 {
383 return NullTypeInfo.Instance();
384 }
385 if (IsGenericMatch(dataType, typeof(Nullable<>)))
386 {
387 return new NullableTypeInfo(dataType, recursionCheck);
388 }
390 if (type != null)
391 {
392 return new EnumerableTypeInfo(dataType, TraceLoggingTypeInfo.GetInstance(type, recursionCheck));
393 }
394 throw new ArgumentException(SR.Format(SR.EventSource_NonCompliantTypeError, dataType.Name));
395 }
bool ICollection< KeyValuePair< TKey, TValue > >. Contains(KeyValuePair< TKey, TValue > keyValuePair)
void Add(TKey key, TValue value)
static Type FindEnumerableElementType([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.Interfaces)] Type type)
Definition Statics.cs:185
static bool IsGenericMatch(Type type, object openType)
Definition Statics.cs:209

References System.Collections.Generic.Dictionary< TKey, TValue >.Add(), System.Diagnostics.Tracing.ScalarArrayTypeInfo.Boolean(), System.Diagnostics.Tracing.ScalarTypeInfo.Boolean(), System.Diagnostics.Tracing.ScalarArrayTypeInfo.Byte(), System.Diagnostics.Tracing.ScalarTypeInfo.Byte(), System.Diagnostics.Tracing.ScalarArrayTypeInfo.Char(), System.Diagnostics.Tracing.ScalarTypeInfo.Char(), System.Collections.Generic.Dictionary< TKey, TValue >.Contains(), System.Diagnostics.Tracing.ScalarArrayTypeInfo.Double(), System.Diagnostics.Tracing.ScalarTypeInfo.Double(), System.elementType, System.SR.EventSource_NonCompliantTypeError, System.SR.EventSource_RecursiveTypeDefinition, System.Diagnostics.Tracing.Statics.FindEnumerableElementType(), System.SR.Format(), System.Type.GetElementType(), System.Diagnostics.Tracing.TraceLoggingTypeInfo.GetInstance(), System.Enum.GetUnderlyingType(), System.Diagnostics.Tracing.ScalarArrayTypeInfo.Guid(), System.Diagnostics.Tracing.ScalarTypeInfo.Guid(), System.Diagnostics.Tracing.DateTimeOffsetTypeInfo.Instance(), System.Diagnostics.Tracing.DateTimeTypeInfo.Instance(), System.Diagnostics.Tracing.DecimalTypeInfo.Instance(), System.Diagnostics.Tracing.NullTypeInfo.Instance(), System.Diagnostics.Tracing.StringTypeInfo.Instance(), System.Diagnostics.Tracing.TimeSpanTypeInfo.Instance(), System.Diagnostics.Tracing.ScalarArrayTypeInfo.Int16(), System.Diagnostics.Tracing.ScalarTypeInfo.Int16(), System.Diagnostics.Tracing.ScalarArrayTypeInfo.Int32(), System.Diagnostics.Tracing.ScalarTypeInfo.Int32(), System.Diagnostics.Tracing.ScalarArrayTypeInfo.Int64(), System.Diagnostics.Tracing.ScalarTypeInfo.Int64(), System.Diagnostics.Tracing.ScalarArrayTypeInfo.IntPtr(), System.Diagnostics.Tracing.ScalarTypeInfo.IntPtr(), System.Type.IsArray, System.Type.IsEnum, System.Diagnostics.Tracing.Statics.IsGenericMatch(), System.Reflection.MemberInfo.Name, System.Diagnostics.Tracing.ScalarArrayTypeInfo.SByte(), System.Diagnostics.Tracing.ScalarTypeInfo.SByte(), System.Diagnostics.Tracing.ScalarArrayTypeInfo.Single(), System.Diagnostics.Tracing.ScalarTypeInfo.Single(), System.type, System.Diagnostics.Tracing.ScalarArrayTypeInfo.UInt16(), System.Diagnostics.Tracing.ScalarTypeInfo.UInt16(), System.Diagnostics.Tracing.ScalarArrayTypeInfo.UInt32(), System.Diagnostics.Tracing.ScalarTypeInfo.UInt32(), System.Diagnostics.Tracing.ScalarArrayTypeInfo.UInt64(), System.Diagnostics.Tracing.ScalarTypeInfo.UInt64(), System.Diagnostics.Tracing.ScalarArrayTypeInfo.UIntPtr(), and System.Diagnostics.Tracing.ScalarTypeInfo.UIntPtr().

Referenced by System.Diagnostics.Tracing.TraceLoggingTypeInfo.GetInstance().